<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>binocular_calibration [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_calibration.html">Calibration</a> / <a href="toc_calibration_binocular.html">Binocular</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">binocular_calibration</span><span data-if="c" style="display:none;">T_binocular_calibration</span><span data-if="cpp" style="display:none;">BinocularCalibration</span><span data-if="dotnet" style="display:none;">BinocularCalibration</span><span data-if="python" style="display:none;">binocular_calibration</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">binocular_calibration</span><span data-if="c" style="display:none;">T_binocular_calibration</span><span data-if="cpp" style="display:none;">BinocularCalibration</span><span data-if="dotnet" style="display:none;">BinocularCalibration</span><span data-if="python" style="display:none;">binocular_calibration</span></code> — Determine all camera parameters of a binocular stereo system.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>binocular_calibration</b>( :  : <a href="#NX"><i>NX</i></a>, <a href="#NY"><i>NY</i></a>, <a href="#NZ"><i>NZ</i></a>, <a href="#NRow1"><i>NRow1</i></a>, <a href="#NCol1"><i>NCol1</i></a>, <a href="#NRow2"><i>NRow2</i></a>, <a href="#NCol2"><i>NCol2</i></a>, <a href="#StartCamParam1"><i>StartCamParam1</i></a>, <a href="#StartCamParam2"><i>StartCamParam2</i></a>, <a href="#NStartPose1"><i>NStartPose1</i></a>, <a href="#NStartPose2"><i>NStartPose2</i></a>, <a href="#EstimateParams"><i>EstimateParams</i></a> : <a href="#CamParam1"><i>CamParam1</i></a>, <a href="#CamParam2"><i>CamParam2</i></a>, <a href="#NFinalPose1"><i>NFinalPose1</i></a>, <a href="#NFinalPose2"><i>NFinalPose2</i></a>, <a href="#RelPose"><i>RelPose</i></a>, <a href="#Errors"><i>Errors</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_binocular_calibration</b>(const Htuple <a href="#NX"><i>NX</i></a>, const Htuple <a href="#NY"><i>NY</i></a>, const Htuple <a href="#NZ"><i>NZ</i></a>, const Htuple <a href="#NRow1"><i>NRow1</i></a>, const Htuple <a href="#NCol1"><i>NCol1</i></a>, const Htuple <a href="#NRow2"><i>NRow2</i></a>, const Htuple <a href="#NCol2"><i>NCol2</i></a>, const Htuple <a href="#StartCamParam1"><i>StartCamParam1</i></a>, const Htuple <a href="#StartCamParam2"><i>StartCamParam2</i></a>, const Htuple <a href="#NStartPose1"><i>NStartPose1</i></a>, const Htuple <a href="#NStartPose2"><i>NStartPose2</i></a>, const Htuple <a href="#EstimateParams"><i>EstimateParams</i></a>, Htuple* <a href="#CamParam1"><i>CamParam1</i></a>, Htuple* <a href="#CamParam2"><i>CamParam2</i></a>, Htuple* <a href="#NFinalPose1"><i>NFinalPose1</i></a>, Htuple* <a href="#NFinalPose2"><i>NFinalPose2</i></a>, Htuple* <a href="#RelPose"><i>RelPose</i></a>, Htuple* <a href="#Errors"><i>Errors</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>BinocularCalibration</b>(const HTuple&amp; <a href="#NX"><i>NX</i></a>, const HTuple&amp; <a href="#NY"><i>NY</i></a>, const HTuple&amp; <a href="#NZ"><i>NZ</i></a>, const HTuple&amp; <a href="#NRow1"><i>NRow1</i></a>, const HTuple&amp; <a href="#NCol1"><i>NCol1</i></a>, const HTuple&amp; <a href="#NRow2"><i>NRow2</i></a>, const HTuple&amp; <a href="#NCol2"><i>NCol2</i></a>, const HTuple&amp; <a href="#StartCamParam1"><i>StartCamParam1</i></a>, const HTuple&amp; <a href="#StartCamParam2"><i>StartCamParam2</i></a>, const HTuple&amp; <a href="#NStartPose1"><i>NStartPose1</i></a>, const HTuple&amp; <a href="#NStartPose2"><i>NStartPose2</i></a>, const HTuple&amp; <a href="#EstimateParams"><i>EstimateParams</i></a>, HTuple* <a href="#CamParam1"><i>CamParam1</i></a>, HTuple* <a href="#CamParam2"><i>CamParam2</i></a>, HTuple* <a href="#NFinalPose1"><i>NFinalPose1</i></a>, HTuple* <a href="#NFinalPose2"><i>NFinalPose2</i></a>, HTuple* <a href="#RelPose"><i>RelPose</i></a>, HTuple* <a href="#Errors"><i>Errors</i></a>)</code></p>
<p>
<code><a href="HCamPar.html">HCamPar</a> <a href="HCamPar.html">HCamPar</a>::<b>BinocularCalibration</b>(const HTuple&amp; <a href="#NX"><i>NX</i></a>, const HTuple&amp; <a href="#NY"><i>NY</i></a>, const HTuple&amp; <a href="#NZ"><i>NZ</i></a>, const HTuple&amp; <a href="#NRow1"><i>NRow1</i></a>, const HTuple&amp; <a href="#NCol1"><i>NCol1</i></a>, const HTuple&amp; <a href="#NRow2"><i>NRow2</i></a>, const HTuple&amp; <a href="#NCol2"><i>NCol2</i></a>, const HCamPar&amp; <a href="#StartCamParam2"><i>StartCamParam2</i></a>, const HPoseArray&amp; <a href="#NStartPose1"><i>NStartPose1</i></a>, const HPoseArray&amp; <a href="#NStartPose2"><i>NStartPose2</i></a>, const HTuple&amp; <a href="#EstimateParams"><i>EstimateParams</i></a>, HCamPar* <a href="#CamParam2"><i>CamParam2</i></a>, HPoseArray* <a href="#NFinalPose1"><i>NFinalPose1</i></a>, HPoseArray* <a href="#NFinalPose2"><i>NFinalPose2</i></a>, HPose* <a href="#RelPose"><i>RelPose</i></a>, HTuple* <a href="#Errors"><i>Errors</i></a>) const</code></p>
<p>
<code><a href="HCamPar.html">HCamPar</a> <a href="HCamPar.html">HCamPar</a>::<b>BinocularCalibration</b>(const HTuple&amp; <a href="#NX"><i>NX</i></a>, const HTuple&amp; <a href="#NY"><i>NY</i></a>, const HTuple&amp; <a href="#NZ"><i>NZ</i></a>, const HTuple&amp; <a href="#NRow1"><i>NRow1</i></a>, const HTuple&amp; <a href="#NCol1"><i>NCol1</i></a>, const HTuple&amp; <a href="#NRow2"><i>NRow2</i></a>, const HTuple&amp; <a href="#NCol2"><i>NCol2</i></a>, const HCamPar&amp; <a href="#StartCamParam2"><i>StartCamParam2</i></a>, const HPose&amp; <a href="#NStartPose1"><i>NStartPose1</i></a>, const HPose&amp; <a href="#NStartPose2"><i>NStartPose2</i></a>, const HTuple&amp; <a href="#EstimateParams"><i>EstimateParams</i></a>, HCamPar* <a href="#CamParam2"><i>CamParam2</i></a>, HPose* <a href="#NFinalPose1"><i>NFinalPose1</i></a>, HPose* <a href="#NFinalPose2"><i>NFinalPose2</i></a>, HPose* <a href="#RelPose"><i>RelPose</i></a>, double* <a href="#Errors"><i>Errors</i></a>) const</code></p>
<p>
<code>static <a href="HCamPar.html">HCamPar</a> <a href="HPose.html">HPose</a>::<b>BinocularCalibration</b>(const HTuple&amp; <a href="#NX"><i>NX</i></a>, const HTuple&amp; <a href="#NY"><i>NY</i></a>, const HTuple&amp; <a href="#NZ"><i>NZ</i></a>, const HTuple&amp; <a href="#NRow1"><i>NRow1</i></a>, const HTuple&amp; <a href="#NCol1"><i>NCol1</i></a>, const HTuple&amp; <a href="#NRow2"><i>NRow2</i></a>, const HTuple&amp; <a href="#NCol2"><i>NCol2</i></a>, const HCamPar&amp; <a href="#StartCamParam1"><i>StartCamParam1</i></a>, const HCamPar&amp; <a href="#StartCamParam2"><i>StartCamParam2</i></a>, const HPoseArray&amp; <a href="#NStartPose1"><i>NStartPose1</i></a>, const HPoseArray&amp; <a href="#NStartPose2"><i>NStartPose2</i></a>, const HTuple&amp; <a href="#EstimateParams"><i>EstimateParams</i></a>, HCamPar* <a href="#CamParam2"><i>CamParam2</i></a>, HPoseArray* <a href="#NFinalPose1"><i>NFinalPose1</i></a>, HPoseArray* <a href="#NFinalPose2"><i>NFinalPose2</i></a>, HPose* <a href="#RelPose"><i>RelPose</i></a>, HTuple* <a href="#Errors"><i>Errors</i></a>)</code></p>
<p>
<code><a href="HCamPar.html">HCamPar</a> <a href="HPose.html">HPose</a>::<b>BinocularCalibration</b>(const HTuple&amp; <a href="#NX"><i>NX</i></a>, const HTuple&amp; <a href="#NY"><i>NY</i></a>, const HTuple&amp; <a href="#NZ"><i>NZ</i></a>, const HTuple&amp; <a href="#NRow1"><i>NRow1</i></a>, const HTuple&amp; <a href="#NCol1"><i>NCol1</i></a>, const HTuple&amp; <a href="#NRow2"><i>NRow2</i></a>, const HTuple&amp; <a href="#NCol2"><i>NCol2</i></a>, const HCamPar&amp; <a href="#StartCamParam1"><i>StartCamParam1</i></a>, const HCamPar&amp; <a href="#StartCamParam2"><i>StartCamParam2</i></a>, const HPose&amp; <a href="#NStartPose2"><i>NStartPose2</i></a>, const HTuple&amp; <a href="#EstimateParams"><i>EstimateParams</i></a>, HCamPar* <a href="#CamParam2"><i>CamParam2</i></a>, HPose* <a href="#NFinalPose1"><i>NFinalPose1</i></a>, HPose* <a href="#NFinalPose2"><i>NFinalPose2</i></a>, HPose* <a href="#RelPose"><i>RelPose</i></a>, double* <a href="#Errors"><i>Errors</i></a>) const</code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>BinocularCalibration</b>(<a href="HTuple.html">HTuple</a> <a href="#NX"><i>NX</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NY"><i>NY</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NZ"><i>NZ</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NRow1"><i>NRow1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NCol1"><i>NCol1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NRow2"><i>NRow2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NCol2"><i>NCol2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#StartCamParam1"><i>startCamParam1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#StartCamParam2"><i>startCamParam2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NStartPose1"><i>NStartPose1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NStartPose2"><i>NStartPose2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#EstimateParams"><i>estimateParams</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#CamParam1"><i>camParam1</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#CamParam2"><i>camParam2</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#NFinalPose1"><i>NFinalPose1</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#NFinalPose2"><i>NFinalPose2</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#RelPose"><i>relPose</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Errors"><i>errors</i></a>)</code></p>
<p>
<code><a href="HCamPar.html">HCamPar</a> <a href="HCamPar.html">HCamPar</a>.<b>BinocularCalibration</b>(<a href="HTuple.html">HTuple</a> <a href="#NX"><i>NX</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NY"><i>NY</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NZ"><i>NZ</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NRow1"><i>NRow1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NCol1"><i>NCol1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NRow2"><i>NRow2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NCol2"><i>NCol2</i></a>, <a href="HCamPar.html">HCamPar</a> <a href="#StartCamParam2"><i>startCamParam2</i></a>, <a href="HPose.html">HPose[]</a> <a href="#NStartPose1"><i>NStartPose1</i></a>, <a href="HPose.html">HPose[]</a> <a href="#NStartPose2"><i>NStartPose2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#EstimateParams"><i>estimateParams</i></a>, out <a href="HCamPar.html">HCamPar</a> <a href="#CamParam2"><i>camParam2</i></a>, out <a href="HPose.html">HPose[]</a> <a href="#NFinalPose1"><i>NFinalPose1</i></a>, out <a href="HPose.html">HPose[]</a> <a href="#NFinalPose2"><i>NFinalPose2</i></a>, out <a href="HPose.html">HPose</a> <a href="#RelPose"><i>relPose</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Errors"><i>errors</i></a>)</code></p>
<p>
<code><a href="HCamPar.html">HCamPar</a> <a href="HCamPar.html">HCamPar</a>.<b>BinocularCalibration</b>(<a href="HTuple.html">HTuple</a> <a href="#NX"><i>NX</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NY"><i>NY</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NZ"><i>NZ</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NRow1"><i>NRow1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NCol1"><i>NCol1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NRow2"><i>NRow2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NCol2"><i>NCol2</i></a>, <a href="HCamPar.html">HCamPar</a> <a href="#StartCamParam2"><i>startCamParam2</i></a>, <a href="HPose.html">HPose</a> <a href="#NStartPose1"><i>NStartPose1</i></a>, <a href="HPose.html">HPose</a> <a href="#NStartPose2"><i>NStartPose2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#EstimateParams"><i>estimateParams</i></a>, out <a href="HCamPar.html">HCamPar</a> <a href="#CamParam2"><i>camParam2</i></a>, out <a href="HPose.html">HPose</a> <a href="#NFinalPose1"><i>NFinalPose1</i></a>, out <a href="HPose.html">HPose</a> <a href="#NFinalPose2"><i>NFinalPose2</i></a>, out <a href="HPose.html">HPose</a> <a href="#RelPose"><i>relPose</i></a>, out double <a href="#Errors"><i>errors</i></a>)</code></p>
<p>
<code>static <a href="HCamPar.html">HCamPar</a> <a href="HPose.html">HPose</a>.<b>BinocularCalibration</b>(<a href="HTuple.html">HTuple</a> <a href="#NX"><i>NX</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NY"><i>NY</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NZ"><i>NZ</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NRow1"><i>NRow1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NCol1"><i>NCol1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NRow2"><i>NRow2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NCol2"><i>NCol2</i></a>, <a href="HCamPar.html">HCamPar</a> <a href="#StartCamParam1"><i>startCamParam1</i></a>, <a href="HCamPar.html">HCamPar</a> <a href="#StartCamParam2"><i>startCamParam2</i></a>, <a href="HPose.html">HPose[]</a> <a href="#NStartPose1"><i>NStartPose1</i></a>, <a href="HPose.html">HPose[]</a> <a href="#NStartPose2"><i>NStartPose2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#EstimateParams"><i>estimateParams</i></a>, out <a href="HCamPar.html">HCamPar</a> <a href="#CamParam2"><i>camParam2</i></a>, out <a href="HPose.html">HPose[]</a> <a href="#NFinalPose1"><i>NFinalPose1</i></a>, out <a href="HPose.html">HPose[]</a> <a href="#NFinalPose2"><i>NFinalPose2</i></a>, out <a href="HPose.html">HPose</a> <a href="#RelPose"><i>relPose</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Errors"><i>errors</i></a>)</code></p>
<p>
<code><a href="HCamPar.html">HCamPar</a> <a href="HPose.html">HPose</a>.<b>BinocularCalibration</b>(<a href="HTuple.html">HTuple</a> <a href="#NX"><i>NX</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NY"><i>NY</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NZ"><i>NZ</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NRow1"><i>NRow1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NCol1"><i>NCol1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NRow2"><i>NRow2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NCol2"><i>NCol2</i></a>, <a href="HCamPar.html">HCamPar</a> <a href="#StartCamParam1"><i>startCamParam1</i></a>, <a href="HCamPar.html">HCamPar</a> <a href="#StartCamParam2"><i>startCamParam2</i></a>, <a href="HPose.html">HPose</a> <a href="#NStartPose2"><i>NStartPose2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#EstimateParams"><i>estimateParams</i></a>, out <a href="HCamPar.html">HCamPar</a> <a href="#CamParam2"><i>camParam2</i></a>, out <a href="HPose.html">HPose</a> <a href="#NFinalPose1"><i>NFinalPose1</i></a>, out <a href="HPose.html">HPose</a> <a href="#NFinalPose2"><i>NFinalPose2</i></a>, out <a href="HPose.html">HPose</a> <a href="#RelPose"><i>relPose</i></a>, out double <a href="#Errors"><i>errors</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>binocular_calibration</b>(<a href="#NX"><i>nx</i></a>: Sequence[Union[float, int]], <a href="#NY"><i>ny</i></a>: Sequence[Union[float, int]], <a href="#NZ"><i>nz</i></a>: Sequence[Union[float, int]], <a href="#NRow1"><i>nrow_1</i></a>: Sequence[Union[float, int]], <a href="#NCol1"><i>ncol_1</i></a>: Sequence[Union[float, int]], <a href="#NRow2"><i>nrow_2</i></a>: Sequence[Union[float, int]], <a href="#NCol2"><i>ncol_2</i></a>: Sequence[Union[float, int]], <a href="#StartCamParam1"><i>start_cam_param_1</i></a>: Sequence[Union[float, int, str]], <a href="#StartCamParam2"><i>start_cam_param_2</i></a>: Sequence[Union[float, int, str]], <a href="#NStartPose1"><i>nstart_pose_1</i></a>: Sequence[Union[float, int]], <a href="#NStartPose2"><i>nstart_pose_2</i></a>: Sequence[Union[float, int]], <a href="#EstimateParams"><i>estimate_params</i></a>: Sequence[str]) -&gt; Tuple[Sequence[Union[float, int, str]], Sequence[Union[float, int, str]], Sequence[Union[float, int]], Sequence[Union[float, int]], Sequence[Union[float, int]], Sequence[float]]</code></p>
<p>
<code>def <b>binocular_calibration_s</b>(<a href="#NX"><i>nx</i></a>: Sequence[Union[float, int]], <a href="#NY"><i>ny</i></a>: Sequence[Union[float, int]], <a href="#NZ"><i>nz</i></a>: Sequence[Union[float, int]], <a href="#NRow1"><i>nrow_1</i></a>: Sequence[Union[float, int]], <a href="#NCol1"><i>ncol_1</i></a>: Sequence[Union[float, int]], <a href="#NRow2"><i>nrow_2</i></a>: Sequence[Union[float, int]], <a href="#NCol2"><i>ncol_2</i></a>: Sequence[Union[float, int]], <a href="#StartCamParam1"><i>start_cam_param_1</i></a>: Sequence[Union[float, int, str]], <a href="#StartCamParam2"><i>start_cam_param_2</i></a>: Sequence[Union[float, int, str]], <a href="#NStartPose1"><i>nstart_pose_1</i></a>: Sequence[Union[float, int]], <a href="#NStartPose2"><i>nstart_pose_2</i></a>: Sequence[Union[float, int]], <a href="#EstimateParams"><i>estimate_params</i></a>: Sequence[str]) -&gt; Tuple[Sequence[Union[float, int, str]], Sequence[Union[float, int, str]], Sequence[Union[float, int]], Sequence[Union[float, int]], Sequence[Union[float, int]], float]</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p>In general, binocular calibration means the exact determination of
the parameters that model the 3D reconstruction of a 3D point from
the corresponding images of this point in a binocular stereo system.
This reconstruction is specified by the internal parameters
<a href="#CamParam1"><i><code><span data-if="hdevelop" style="display:inline">CamParam1</span><span data-if="c" style="display:none">CamParam1</span><span data-if="cpp" style="display:none">CamParam1</span><span data-if="com" style="display:none">CamParam1</span><span data-if="dotnet" style="display:none">camParam1</span><span data-if="python" style="display:none">cam_param_1</span></code></i></a> of camera 1 and <a href="#CamParam2"><i><code><span data-if="hdevelop" style="display:inline">CamParam2</span><span data-if="c" style="display:none">CamParam2</span><span data-if="cpp" style="display:none">CamParam2</span><span data-if="com" style="display:none">CamParam2</span><span data-if="dotnet" style="display:none">camParam2</span><span data-if="python" style="display:none">cam_param_2</span></code></i></a> of camera 2
describing the underlying camera model, and the external
parameters <a href="#RelPose"><i><code><span data-if="hdevelop" style="display:inline">RelPose</span><span data-if="c" style="display:none">RelPose</span><span data-if="cpp" style="display:none">RelPose</span><span data-if="com" style="display:none">RelPose</span><span data-if="dotnet" style="display:none">relPose</span><span data-if="python" style="display:none">rel_pose</span></code></i></a> describing the relative pose of camera
system 2 in relation to camera system 1.
</p>
<p>Thus, known 3D model points (with coordinates <a href="#NX"><i><code><span data-if="hdevelop" style="display:inline">NX</span><span data-if="c" style="display:none">NX</span><span data-if="cpp" style="display:none">NX</span><span data-if="com" style="display:none">NX</span><span data-if="dotnet" style="display:none">NX</span><span data-if="python" style="display:none">nx</span></code></i></a>,
<a href="#NY"><i><code><span data-if="hdevelop" style="display:inline">NY</span><span data-if="c" style="display:none">NY</span><span data-if="cpp" style="display:none">NY</span><span data-if="com" style="display:none">NY</span><span data-if="dotnet" style="display:none">NY</span><span data-if="python" style="display:none">ny</span></code></i></a>, <a href="#NZ"><i><code><span data-if="hdevelop" style="display:inline">NZ</span><span data-if="c" style="display:none">NZ</span><span data-if="cpp" style="display:none">NZ</span><span data-if="com" style="display:none">NZ</span><span data-if="dotnet" style="display:none">NZ</span><span data-if="python" style="display:none">nz</span></code></i></a>) are projected in the image planes of both
cameras (camera 1 and camera 2) and the sum of the squared distances
between these projections and the corresponding measured image
points (with coordinates <a href="#NRow1"><i><code><span data-if="hdevelop" style="display:inline">NRow1</span><span data-if="c" style="display:none">NRow1</span><span data-if="cpp" style="display:none">NRow1</span><span data-if="com" style="display:none">NRow1</span><span data-if="dotnet" style="display:none">NRow1</span><span data-if="python" style="display:none">nrow_1</span></code></i></a>, <a href="#NCol1"><i><code><span data-if="hdevelop" style="display:inline">NCol1</span><span data-if="c" style="display:none">NCol1</span><span data-if="cpp" style="display:none">NCol1</span><span data-if="com" style="display:none">NCol1</span><span data-if="dotnet" style="display:none">NCol1</span><span data-if="python" style="display:none">ncol_1</span></code></i></a> for camera 1
and <a href="#NRow2"><i><code><span data-if="hdevelop" style="display:inline">NRow2</span><span data-if="c" style="display:none">NRow2</span><span data-if="cpp" style="display:none">NRow2</span><span data-if="com" style="display:none">NRow2</span><span data-if="dotnet" style="display:none">NRow2</span><span data-if="python" style="display:none">nrow_2</span></code></i></a>, <a href="#NCol2"><i><code><span data-if="hdevelop" style="display:inline">NCol2</span><span data-if="c" style="display:none">NCol2</span><span data-if="cpp" style="display:none">NCol2</span><span data-if="com" style="display:none">NCol2</span><span data-if="dotnet" style="display:none">NCol2</span><span data-if="python" style="display:none">ncol_2</span></code></i></a> for camera 2) is minimized.  It
should be noted that all these model points must be visible in both
images.  The used camera model is described in
<a href="toc_calibration.html">Calibration</a>.  The camera model is represented (for each
camera separately) by a tuple of 9 to 16 parameters that correspond
to perspective or telecentric area scan or telecentric line scan
cameras (see <a href="toc_calibration.html">Calibration</a>).  The projection uses the
initial values <a href="#StartCamParam1"><i><code><span data-if="hdevelop" style="display:inline">StartCamParam1</span><span data-if="c" style="display:none">StartCamParam1</span><span data-if="cpp" style="display:none">StartCamParam1</span><span data-if="com" style="display:none">StartCamParam1</span><span data-if="dotnet" style="display:none">startCamParam1</span><span data-if="python" style="display:none">start_cam_param_1</span></code></i></a> and <a href="#StartCamParam2"><i><code><span data-if="hdevelop" style="display:inline">StartCamParam2</span><span data-if="c" style="display:none">StartCamParam2</span><span data-if="cpp" style="display:none">StartCamParam2</span><span data-if="com" style="display:none">StartCamParam2</span><span data-if="dotnet" style="display:none">startCamParam2</span><span data-if="python" style="display:none">start_cam_param_2</span></code></i></a>
of the internal parameters of camera 1 and camera 2, which can be
obtained from the camera data sheets.  In addition, the initial
guesses <a href="#NStartPose1"><i><code><span data-if="hdevelop" style="display:inline">NStartPose1</span><span data-if="c" style="display:none">NStartPose1</span><span data-if="cpp" style="display:none">NStartPose1</span><span data-if="com" style="display:none">NStartPose1</span><span data-if="dotnet" style="display:none">NStartPose1</span><span data-if="python" style="display:none">nstart_pose_1</span></code></i></a> and <a href="#NStartPose2"><i><code><span data-if="hdevelop" style="display:inline">NStartPose2</span><span data-if="c" style="display:none">NStartPose2</span><span data-if="cpp" style="display:none">NStartPose2</span><span data-if="com" style="display:none">NStartPose2</span><span data-if="dotnet" style="display:none">NStartPose2</span><span data-if="python" style="display:none">nstart_pose_2</span></code></i></a> of the poses
of the 3D calibration model in relative to the camera coordinate
systems (<i>ccs</i>) of camera 1 and camera 2 are needed as
well. These poses are expected in the form
<span title="1" style="vertical-align:-0.217917em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3.42407em" height="1.01195em" viewBox="0 0 54.785156 16.191269">
<!-- Original BoundingBox: -27.392578 -8.095642 27.392578 8.095627 -->
  <defs>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_99">
      <path style="fill-rule: evenodd;" d="M438.000000 -383.000000C402.000000 -377.000000,387.000000 -349.000000,387.000000 -327.000000C387.000000 -300.000000,408.000000 -290.000000,426.000000 -290.000000C448.000000 -290.000000,483.000000 -306.000000,483.000000 -354.000000C483.000000 -422.000000,405.000000 -441.000000,351.000000 -441.000000C201.000000 -441.000000,62.000000 -303.000000,62.000000 -164.000000C62.000000 -78.000000,122.000000 10.000000,247.000000 10.000000C416.000000 10.000000,495.000000 -89.000000,495.000000 -103.000000C495.000000 -109.000000,486.000000 -120.000000,478.000000 -120.000000C472.000000 -120.000000,470.000000 -118.000000,462.000000 -110.000000C384.000000 -18.000000,267.000000 -18.000000,249.000000 -18.000000C177.000000 -18.000000,145.000000 -67.000000,145.000000 -129.000000C145.000000 -158.000000,159.000000 -267.000000,211.000000 -336.000000C249.000000 -385.000000,301.000000 -413.000000,351.000000 -413.000000C365.000000 -413.000000,413.000000 -411.000000,438.000000 -383.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_115">
      <path style="fill-rule: evenodd;" d="M431.000000 -376.000000C405.000000 -370.000000,389.000000 -349.000000,389.000000 -329.000000C389.000000 -306.000000,409.000000 -297.000000,422.000000 -297.000000C432.000000 -297.000000,470.000000 -303.000000,470.000000 -354.000000C470.000000 -419.000000,398.000000 -441.000000,337.000000 -441.000000C181.000000 -441.000000,153.000000 -326.000000,153.000000 -295.000000C153.000000 -258.000000,174.000000 -234.000000,188.000000 -222.000000C214.000000 -202.000000,232.000000 -198.000000,301.000000 -186.000000C322.000000 -182.000000,386.000000 -170.000000,386.000000 -120.000000C386.000000 -103.000000,375.000000 -65.000000,333.000000 -40.000000C294.000000 -18.000000,245.000000 -18.000000,233.000000 -18.000000C193.000000 -18.000000,136.000000 -27.000000,113.000000 -60.000000C146.000000 -64.000000,168.000000 -89.000000,168.000000 -117.000000C168.000000 -142.000000,150.000000 -154.000000,129.000000 -154.000000C100.000000 -154.000000,71.000000 -131.000000,71.000000 -87.000000C71.000000 -27.000000,135.000000 10.000000,232.000000 10.000000C416.000000 10.000000,450.000000 -116.000000,450.000000 -155.000000C450.000000 -247.000000,349.000000 -265.000000,312.000000 -272.000000C303.000000 -274.000000,278.000000 -278.000000,272.000000 -280.000000C235.000000 -287.000000,217.000000 -308.000000,217.000000 -330.000000C217.000000 -353.000000,235.000000 -380.000000,257.000000 -394.000000C284.000000 -411.000000,319.000000 -413.000000,336.000000 -413.000000C357.000000 -413.000000,409.000000 -410.000000,431.000000 -376.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_119">
      <path style="fill-rule: evenodd;" d="M526.000000 -319.000000C533.000000 -346.000000,545.000000 -394.000000,545.000000 -399.000000C545.000000 -419.000000,529.000000 -431.000000,512.000000 -431.000000C493.000000 -431.000000,475.000000 -419.000000,469.000000 -402.000000C466.000000 -394.000000,456.000000 -352.000000,449.000000 -327.000000C435.000000 -270.000000,435.000000 -268.000000,420.000000 -212.000000C407.000000 -157.000000,405.000000 -149.000000,404.000000 -120.000000C408.000000 -100.000000,400.000000 -81.000000,376.000000 -51.000000C363.000000 -35.000000,343.000000 -18.000000,309.000000 -18.000000C270.000000 -18.000000,219.000000 -32.000000,219.000000 -110.000000C219.000000 -161.000000,247.000000 -235.000000,267.000000 -286.000000C284.000000 -330.000000,288.000000 -339.000000,288.000000 -356.000000C288.000000 -404.000000,247.000000 -441.000000,193.000000 -441.000000C92.000000 -441.000000,47.000000 -305.000000,47.000000 -288.000000C47.000000 -275.000000,61.000000 -275.000000,64.000000 -275.000000C78.000000 -275.000000,79.000000 -280.000000,82.000000 -291.000000C107.000000 -374.000000,150.000000 -413.000000,190.000000 -413.000000C207.000000 -413.000000,215.000000 -402.000000,215.000000 -378.000000C215.000000 -355.000000,206.000000 -333.000000,201.000000 -320.000000C144.000000 -174.000000,144.000000 -154.000000,144.000000 -123.000000C144.000000 -5.000000,251.000000 10.000000,305.000000 10.000000C324.000000 10.000000,373.000000 10.000000,418.000000 -57.000000C441.000000 -12.000000,496.000000 10.000000,557.000000 10.000000C646.000000 10.000000,690.000000 -67.000000,710.000000 -108.000000C753.000000 -192.000000,780.000000 -317.000000,780.000000 -363.000000C780.000000 -438.000000,737.000000 -442.000000,730.000000 -442.000000C704.000000 -442.000000,676.000000 -415.000000,676.000000 -389.000000C676.000000 -372.000000,686.000000 -364.000000,693.000000 -358.000000C717.000000 -338.000000,730.000000 -310.000000,730.000000 -278.000000C730.000000 -265.000000,688.000000 -18.000000,561.000000 -18.000000C480.000000 -18.000000,480.000000 -90.000000,480.000000 -107.000000C480.000000 -134.000000,484.000000 -150.000000,498.000000 -207.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmbx10_80">
      <path style="fill-rule: evenodd;" d="M289.000000 -302.000000L466.000000 -302.000000C605.000000 -302.000000,721.000000 -374.000000,721.000000 -491.000000C721.000000 -601.000000,622.000000 -686.000000,456.000000 -686.000000L39.000000 -686.000000L39.000000 -639.000000L147.000000 -639.000000L147.000000 -47.000000L39.000000 -47.000000L39.000000 -0.000000L218.000000 -0.000000L77.000000 -3.000000L175.000000 -3.000000L218.000000 -3.000000L261.000000 -3.000000L359.000000 -3.000000L397.000000 -0.000000L397.000000 -47.000000L289.000000 -47.000000M417.000000 -343.000000L283.000000 -343.000000L283.000000 -639.000000L418.000000 -639.000000C568.000000 -639.000000,568.000000 -563.000000,568.000000 -491.000000C568.000000 -420.000000,568.000000 -343.000000,417.000000 -343.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.623413 5.708572)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_99"></use>
    <use xlink:href="#GLYPHcmmi7_99" x="3.573800"></use>
    <use xlink:href="#GLYPHcmmi7_115" x="7.147601"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,18.830048 12.704590)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmbx10_80"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,31.360809 15.095642)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_119"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,40.882629 15.095642)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_99"></use>
    <use xlink:href="#GLYPHcmmi7_115" x="3.573800"></use>
  </g>
</svg></span>, where <i>wcs</i> denotes the
world coordinate system (see <a href="toc_transformations_poses.html">Transformations / Poses</a> and
<code>“Solution Guide III-C - 3D Vision”</code>). They can be
determined by 该算子 <a href="find_marks_and_pose.html"><code><span data-if="hdevelop" style="display:inline">find_marks_and_pose</span><span data-if="c" style="display:none">find_marks_and_pose</span><span data-if="cpp" style="display:none">FindMarksAndPose</span><span data-if="com" style="display:none">FindMarksAndPose</span><span data-if="dotnet" style="display:none">FindMarksAndPose</span><span data-if="python" style="display:none">find_marks_and_pose</span></code></a>.  Since this
calibration algorithm simultaneously handles correspondences between
measured image and known model points from different image pairs,
poses (<a href="#NStartPose1"><i><code><span data-if="hdevelop" style="display:inline">NStartPose1</span><span data-if="c" style="display:none">NStartPose1</span><span data-if="cpp" style="display:none">NStartPose1</span><span data-if="com" style="display:none">NStartPose1</span><span data-if="dotnet" style="display:none">NStartPose1</span><span data-if="python" style="display:none">nstart_pose_1</span></code></i></a>,<a href="#NStartPose2"><i><code><span data-if="hdevelop" style="display:inline">NStartPose2</span><span data-if="c" style="display:none">NStartPose2</span><span data-if="cpp" style="display:none">NStartPose2</span><span data-if="com" style="display:none">NStartPose2</span><span data-if="dotnet" style="display:none">NStartPose2</span><span data-if="python" style="display:none">nstart_pose_2</span></code></i></a>), and measured
points (<a href="#NRow1"><i><code><span data-if="hdevelop" style="display:inline">NRow1</span><span data-if="c" style="display:none">NRow1</span><span data-if="cpp" style="display:none">NRow1</span><span data-if="com" style="display:none">NRow1</span><span data-if="dotnet" style="display:none">NRow1</span><span data-if="python" style="display:none">nrow_1</span></code></i></a>,<a href="#NCol1"><i><code><span data-if="hdevelop" style="display:inline">NCol1</span><span data-if="c" style="display:none">NCol1</span><span data-if="cpp" style="display:none">NCol1</span><span data-if="com" style="display:none">NCol1</span><span data-if="dotnet" style="display:none">NCol1</span><span data-if="python" style="display:none">ncol_1</span></code></i></a>,<a href="#NRow2"><i><code><span data-if="hdevelop" style="display:inline">NRow2</span><span data-if="c" style="display:none">NRow2</span><span data-if="cpp" style="display:none">NRow2</span><span data-if="com" style="display:none">NRow2</span><span data-if="dotnet" style="display:none">NRow2</span><span data-if="python" style="display:none">nrow_2</span></code></i></a>,
<a href="#NCol2"><i><code><span data-if="hdevelop" style="display:inline">NCol2</span><span data-if="c" style="display:none">NCol2</span><span data-if="cpp" style="display:none">NCol2</span><span data-if="com" style="display:none">NCol2</span><span data-if="dotnet" style="display:none">NCol2</span><span data-if="python" style="display:none">ncol_2</span></code></i></a>) must be passed concatenated in a corresponding
order.
</p>
<p>The input parameter <a href="#EstimateParams"><i><code><span data-if="hdevelop" style="display:inline">EstimateParams</span><span data-if="c" style="display:none">EstimateParams</span><span data-if="cpp" style="display:none">EstimateParams</span><span data-if="com" style="display:none">EstimateParams</span><span data-if="dotnet" style="display:none">estimateParams</span><span data-if="python" style="display:none">estimate_params</span></code></i></a> is used to select the
parameters to be estimated.  Usually this parameter is set to
<i><span data-if="hdevelop" style="display:inline">'all'</span><span data-if="c" style="display:none">"all"</span><span data-if="cpp" style="display:none">"all"</span><span data-if="com" style="display:none">"all"</span><span data-if="dotnet" style="display:none">"all"</span><span data-if="python" style="display:none">"all"</span></i>, i.e., all external camera parameters (translation
and rotation) and all internal camera parameters are determined.
Otherwise, <a href="#EstimateParams"><i><code><span data-if="hdevelop" style="display:inline">EstimateParams</span><span data-if="c" style="display:none">EstimateParams</span><span data-if="cpp" style="display:none">EstimateParams</span><span data-if="com" style="display:none">EstimateParams</span><span data-if="dotnet" style="display:none">estimateParams</span><span data-if="python" style="display:none">estimate_params</span></code></i></a> contains a tuple of strings
indicating the combination of parameters to estimate.
For instance,  if the internal camera parameters already have been
determined (e.g., by previous calls to <code><span data-if="hdevelop" style="display:inline">binocular_calibration</span><span data-if="c" style="display:none">binocular_calibration</span><span data-if="cpp" style="display:none">BinocularCalibration</span><span data-if="com" style="display:none">BinocularCalibration</span><span data-if="dotnet" style="display:none">BinocularCalibration</span><span data-if="python" style="display:none">binocular_calibration</span></code>), it is
often desired to only determine relative the pose of the two cameras
to each other (<a href="#RelPose"><i><code><span data-if="hdevelop" style="display:inline">RelPose</span><span data-if="c" style="display:none">RelPose</span><span data-if="cpp" style="display:none">RelPose</span><span data-if="com" style="display:none">RelPose</span><span data-if="dotnet" style="display:none">relPose</span><span data-if="python" style="display:none">rel_pose</span></code></i></a>).  In this case,
<a href="#EstimateParams"><i><code><span data-if="hdevelop" style="display:inline">EstimateParams</span><span data-if="c" style="display:none">EstimateParams</span><span data-if="cpp" style="display:none">EstimateParams</span><span data-if="com" style="display:none">EstimateParams</span><span data-if="dotnet" style="display:none">estimateParams</span><span data-if="python" style="display:none">estimate_params</span></code></i></a> can be set to <i><span data-if="hdevelop" style="display:inline">'pose_rel'</span><span data-if="c" style="display:none">"pose_rel"</span><span data-if="cpp" style="display:none">"pose_rel"</span><span data-if="com" style="display:none">"pose_rel"</span><span data-if="dotnet" style="display:none">"pose_rel"</span><span data-if="python" style="display:none">"pose_rel"</span></i>.
The internal parameters can be subsumed
by the parameter values <i><span data-if="hdevelop" style="display:inline">'cam_param1'</span><span data-if="c" style="display:none">"cam_param1"</span><span data-if="cpp" style="display:none">"cam_param1"</span><span data-if="com" style="display:none">"cam_param1"</span><span data-if="dotnet" style="display:none">"cam_param1"</span><span data-if="python" style="display:none">"cam_param1"</span></i> and
<i><span data-if="hdevelop" style="display:inline">'cam_param2'</span><span data-if="c" style="display:none">"cam_param2"</span><span data-if="cpp" style="display:none">"cam_param2"</span><span data-if="com" style="display:none">"cam_param2"</span><span data-if="dotnet" style="display:none">"cam_param2"</span><span data-if="python" style="display:none">"cam_param2"</span></i> as well.  Note that if the polynomial model is
used to model the lens distortions, the values <i><span data-if="hdevelop" style="display:inline">'k1_i'</span><span data-if="c" style="display:none">"k1_i"</span><span data-if="cpp" style="display:none">"k1_i"</span><span data-if="com" style="display:none">"k1_i"</span><span data-if="dotnet" style="display:none">"k1_i"</span><span data-if="python" style="display:none">"k1_i"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'k2_i'</span><span data-if="c" style="display:none">"k2_i"</span><span data-if="cpp" style="display:none">"k2_i"</span><span data-if="com" style="display:none">"k2_i"</span><span data-if="dotnet" style="display:none">"k2_i"</span><span data-if="python" style="display:none">"k2_i"</span></i> and <i><span data-if="hdevelop" style="display:inline">'k3_i'</span><span data-if="c" style="display:none">"k3_i"</span><span data-if="cpp" style="display:none">"k3_i"</span><span data-if="com" style="display:none">"k3_i"</span><span data-if="dotnet" style="display:none">"k3_i"</span><span data-if="python" style="display:none">"k3_i"</span></i> can be specified individually,
whereas <i><span data-if="hdevelop" style="display:inline">'p1'</span><span data-if="c" style="display:none">"p1"</span><span data-if="cpp" style="display:none">"p1"</span><span data-if="com" style="display:none">"p1"</span><span data-if="dotnet" style="display:none">"p1"</span><span data-if="python" style="display:none">"p1"</span></i> and <i><span data-if="hdevelop" style="display:inline">'p2'</span><span data-if="c" style="display:none">"p2"</span><span data-if="cpp" style="display:none">"p2"</span><span data-if="com" style="display:none">"p2"</span><span data-if="dotnet" style="display:none">"p2"</span><span data-if="python" style="display:none">"p2"</span></i> can only be specified in the
group <i><span data-if="hdevelop" style="display:inline">'poly_tan_2_i'</span><span data-if="c" style="display:none">"poly_tan_2_i"</span><span data-if="cpp" style="display:none">"poly_tan_2_i"</span><span data-if="com" style="display:none">"poly_tan_2_i"</span><span data-if="dotnet" style="display:none">"poly_tan_2_i"</span><span data-if="python" style="display:none">"poly_tan_2_i"</span></i> (with <i><span data-if="hdevelop" style="display:inline">'i'</span><span data-if="c" style="display:none">"i"</span><span data-if="cpp" style="display:none">"i"</span><span data-if="com" style="display:none">"i"</span><span data-if="dotnet" style="display:none">"i"</span><span data-if="python" style="display:none">"i"</span></i> indicating the index of
the camera).  <i><span data-if="hdevelop" style="display:inline">'poly_i'</span><span data-if="c" style="display:none">"poly_i"</span><span data-if="cpp" style="display:none">"poly_i"</span><span data-if="com" style="display:none">"poly_i"</span><span data-if="dotnet" style="display:none">"poly_i"</span><span data-if="python" style="display:none">"poly_i"</span></i> specifies the group <i><span data-if="hdevelop" style="display:inline">'k1_i'</span><span data-if="c" style="display:none">"k1_i"</span><span data-if="cpp" style="display:none">"k1_i"</span><span data-if="com" style="display:none">"k1_i"</span><span data-if="dotnet" style="display:none">"k1_i"</span><span data-if="python" style="display:none">"k1_i"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'k2_i'</span><span data-if="c" style="display:none">"k2_i"</span><span data-if="cpp" style="display:none">"k2_i"</span><span data-if="com" style="display:none">"k2_i"</span><span data-if="dotnet" style="display:none">"k2_i"</span><span data-if="python" style="display:none">"k2_i"</span></i>, <i><span data-if="hdevelop" style="display:inline">'k3_i'</span><span data-if="c" style="display:none">"k3_i"</span><span data-if="cpp" style="display:none">"k3_i"</span><span data-if="com" style="display:none">"k3_i"</span><span data-if="dotnet" style="display:none">"k3_i"</span><span data-if="python" style="display:none">"k3_i"</span></i> and <i><span data-if="hdevelop" style="display:inline">'poly_tan_2_i'</span><span data-if="c" style="display:none">"poly_tan_2_i"</span><span data-if="cpp" style="display:none">"poly_tan_2_i"</span><span data-if="com" style="display:none">"poly_tan_2_i"</span><span data-if="dotnet" style="display:none">"poly_tan_2_i"</span><span data-if="python" style="display:none">"poly_tan_2_i"</span></i>.
</p>
<p>The following list contains all possible strings that can be passed to
the tuple:
</p>
<div style="text-align:center"><table style="width:100%;margin-left:auto;margin-right:auto" class="grid">
<col span="1" style="width:60%;">
<col span="1" style="width:40%;">
<tr>
<td style="text-align:left">
<em>Allowed strings for</em> <a href="#EstimateParams"><i><code><span data-if="hdevelop" style="display:inline">EstimateParams</span><span data-if="c" style="display:none">EstimateParams</span><span data-if="cpp" style="display:none">EstimateParams</span><span data-if="com" style="display:none">EstimateParams</span><span data-if="dotnet" style="display:none">estimateParams</span><span data-if="python" style="display:none">estimate_params</span></code></i></a> </td>
<td style="text-align:left">
<em>Determined parameters</em> </td>
</tr>
<tr>
<td style="text-align:left">
'all' (default) </td>
<td style="text-align:left"> All internal camera parameters,
as well as the relative pose of both cameras and the poses of the
calibration objects. </td>
</tr>
<tr>
<td style="text-align:left">
'pose' </td>
<td style="text-align:left"> Relative pose between the two cameras and poses of the
calibration objects. </td>
</tr>
<tr>
<td style="text-align:left">
'pose_rel' </td>
<td style="text-align:left"> Relative pose between the two cameras. </td>
</tr>
<tr>
<td style="text-align:left">
'alpha_rel', 'beta_rel', 'gamma_rel', 'transx_rel', 'transy_rel',
'transz_rel' </td>
<td style="text-align:left">
Rotation angles and translation parameters of the relative pose
between the two cameras. </td>
</tr>
<tr>
<td style="text-align:left">
'pose_caltabs' </td>
<td style="text-align:left"> Poses of the calibration objects. </td>
</tr>
<tr>
<td style="text-align:left">
'alpha_caltabs', 'beta_caltabs', 'gamma_caltabs', 'transx_caltabs',
'transy_caltabs', 'transz_caltabs' </td>
<td style="text-align:left">
Rotation angles and translation parameters of the relative poses
of the calibration objects. </td>
</tr>
<tr>
<td style="text-align:left">
'cam_param1', 'cam_param2' </td>
<td style="text-align:left"> All internal camera parameters of camera 1
and camera 2, respectively. </td>
</tr>
<tr>
<td style="text-align:left">
'focus1', 'magnification1', 'kappa1', 'poly_1', 'k1_1', 'k2_1', 'k3_1',
'poly_tan_2_1', 'image_plane_dist1', 'tilt1', 'cx1', 'cy1', 'sx1',
'sy1',
'focus2', 'magnification2', 'kappa2', 'poly_2', 'k1_2', 'k2_2', 'k3_2',
'poly_tan_2_2', 'image_plane_dist2', 'tilt2', 'cx2', 'cy2', 'sx2',
'sy2' </td>
<td style="text-align:left"> Individual internal camera parameters of camera 1
and camera 2, respectively. </td>
</tr>
<tr>
<td style="text-align:left">
'common_motion_vector' </td>
<td style="text-align:left"> Determines whether two line scan
cameras have a common motion vector.  This is the case if the
two cameras are mounted rigidly and the object is moved linearly
in front of the cameras or if the two rigidly mounted cameras
are moved by the same linear actuator.  This is assumed to be
the default.  Therefore, you only need to set
'~common_motion_vector' if the cameras are
moving independently in different directions.
</td>
</tr>
</table></div>
<p>In addition, parameters can be excluded from estimation by using the
prefix '~'.  For example, the values
<i><span data-if="hdevelop" style="display:inline">['pose_rel', '~transx_rel']</span><span data-if="c" style="display:none">["pose_rel", "~transx_rel"]</span><span data-if="cpp" style="display:none">["pose_rel", "~transx_rel"]</span><span data-if="com" style="display:none">["pose_rel", "~transx_rel"]</span><span data-if="dotnet" style="display:none">["pose_rel", "~transx_rel"]</span><span data-if="python" style="display:none">["pose_rel", "~transx_rel"]</span></i> have the same effect as
<i><span data-if="hdevelop" style="display:inline">['alpha_rel','beta_rel','gamma_rel','transy_rel','transz_rel']</span><span data-if="c" style="display:none">["alpha_rel","beta_rel","gamma_rel","transy_rel","transz_rel"]</span><span data-if="cpp" style="display:none">["alpha_rel","beta_rel","gamma_rel","transy_rel","transz_rel"]</span><span data-if="com" style="display:none">["alpha_rel","beta_rel","gamma_rel","transy_rel","transz_rel"]</span><span data-if="dotnet" style="display:none">["alpha_rel","beta_rel","gamma_rel","transy_rel","transz_rel"]</span><span data-if="python" style="display:none">["alpha_rel","beta_rel","gamma_rel","transy_rel","transz_rel"]</span></i>.
On the other hand,
<i><span data-if="hdevelop" style="display:inline">['all','~focus1']</span><span data-if="c" style="display:none">["all","~focus1"]</span><span data-if="cpp" style="display:none">["all","~focus1"]</span><span data-if="com" style="display:none">["all","~focus1"]</span><span data-if="dotnet" style="display:none">["all","~focus1"]</span><span data-if="python" style="display:none">["all","~focus1"]</span></i>
determines all internal and external parameters except the focus of
camera 1, for instance.  The prefix '~' can be used
with all parameter values except <i><span data-if="hdevelop" style="display:inline">'all'</span><span data-if="c" style="display:none">"all"</span><span data-if="cpp" style="display:none">"all"</span><span data-if="com" style="display:none">"all"</span><span data-if="dotnet" style="display:none">"all"</span><span data-if="python" style="display:none">"all"</span></i>.
</p>
<p>The underlying camera model is explained in the chapter
<a href="toc_calibration.html">Calibration</a>.  The calibrated internal camera
parameters are returned in <a href="#CamParam1"><i><code><span data-if="hdevelop" style="display:inline">CamParam1</span><span data-if="c" style="display:none">CamParam1</span><span data-if="cpp" style="display:none">CamParam1</span><span data-if="com" style="display:none">CamParam1</span><span data-if="dotnet" style="display:none">camParam1</span><span data-if="python" style="display:none">cam_param_1</span></code></i></a> for camera 1 and in
<a href="#CamParam2"><i><code><span data-if="hdevelop" style="display:inline">CamParam2</span><span data-if="c" style="display:none">CamParam2</span><span data-if="cpp" style="display:none">CamParam2</span><span data-if="com" style="display:none">CamParam2</span><span data-if="dotnet" style="display:none">camParam2</span><span data-if="python" style="display:none">cam_param_2</span></code></i></a> for camera 2.
</p>
<p>The external parameters are returned
analogously to <a href="camera_calibration.html"><code><span data-if="hdevelop" style="display:inline">camera_calibration</span><span data-if="c" style="display:none">camera_calibration</span><span data-if="cpp" style="display:none">CameraCalibration</span><span data-if="com" style="display:none">CameraCalibration</span><span data-if="dotnet" style="display:none">CameraCalibration</span><span data-if="python" style="display:none">camera_calibration</span></code></a>, the 3D transformation
poses of the calibration model to the respective camera coordinate system
(<i>ccs</i>) are returned in <a href="#NFinalPose1"><i><code><span data-if="hdevelop" style="display:inline">NFinalPose1</span><span data-if="c" style="display:none">NFinalPose1</span><span data-if="cpp" style="display:none">NFinalPose1</span><span data-if="com" style="display:none">NFinalPose1</span><span data-if="dotnet" style="display:none">NFinalPose1</span><span data-if="python" style="display:none">nfinal_pose_1</span></code></i></a> and
<a href="#NFinalPose2"><i><code><span data-if="hdevelop" style="display:inline">NFinalPose2</span><span data-if="c" style="display:none">NFinalPose2</span><span data-if="cpp" style="display:none">NFinalPose2</span><span data-if="com" style="display:none">NFinalPose2</span><span data-if="dotnet" style="display:none">NFinalPose2</span><span data-if="python" style="display:none">nfinal_pose_2</span></code></i></a>.
Thus, the poses are in the form <span title="2" style="vertical-align:-0.217917em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3.42407em" height="1.01195em" viewBox="0 0 54.785156 16.191269">
<!-- Original BoundingBox: -27.392578 -8.095642 27.392578 8.095627 -->
  <defs>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_99">
      <path style="fill-rule: evenodd;" d="M438.000000 -383.000000C402.000000 -377.000000,387.000000 -349.000000,387.000000 -327.000000C387.000000 -300.000000,408.000000 -290.000000,426.000000 -290.000000C448.000000 -290.000000,483.000000 -306.000000,483.000000 -354.000000C483.000000 -422.000000,405.000000 -441.000000,351.000000 -441.000000C201.000000 -441.000000,62.000000 -303.000000,62.000000 -164.000000C62.000000 -78.000000,122.000000 10.000000,247.000000 10.000000C416.000000 10.000000,495.000000 -89.000000,495.000000 -103.000000C495.000000 -109.000000,486.000000 -120.000000,478.000000 -120.000000C472.000000 -120.000000,470.000000 -118.000000,462.000000 -110.000000C384.000000 -18.000000,267.000000 -18.000000,249.000000 -18.000000C177.000000 -18.000000,145.000000 -67.000000,145.000000 -129.000000C145.000000 -158.000000,159.000000 -267.000000,211.000000 -336.000000C249.000000 -385.000000,301.000000 -413.000000,351.000000 -413.000000C365.000000 -413.000000,413.000000 -411.000000,438.000000 -383.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_115">
      <path style="fill-rule: evenodd;" d="M431.000000 -376.000000C405.000000 -370.000000,389.000000 -349.000000,389.000000 -329.000000C389.000000 -306.000000,409.000000 -297.000000,422.000000 -297.000000C432.000000 -297.000000,470.000000 -303.000000,470.000000 -354.000000C470.000000 -419.000000,398.000000 -441.000000,337.000000 -441.000000C181.000000 -441.000000,153.000000 -326.000000,153.000000 -295.000000C153.000000 -258.000000,174.000000 -234.000000,188.000000 -222.000000C214.000000 -202.000000,232.000000 -198.000000,301.000000 -186.000000C322.000000 -182.000000,386.000000 -170.000000,386.000000 -120.000000C386.000000 -103.000000,375.000000 -65.000000,333.000000 -40.000000C294.000000 -18.000000,245.000000 -18.000000,233.000000 -18.000000C193.000000 -18.000000,136.000000 -27.000000,113.000000 -60.000000C146.000000 -64.000000,168.000000 -89.000000,168.000000 -117.000000C168.000000 -142.000000,150.000000 -154.000000,129.000000 -154.000000C100.000000 -154.000000,71.000000 -131.000000,71.000000 -87.000000C71.000000 -27.000000,135.000000 10.000000,232.000000 10.000000C416.000000 10.000000,450.000000 -116.000000,450.000000 -155.000000C450.000000 -247.000000,349.000000 -265.000000,312.000000 -272.000000C303.000000 -274.000000,278.000000 -278.000000,272.000000 -280.000000C235.000000 -287.000000,217.000000 -308.000000,217.000000 -330.000000C217.000000 -353.000000,235.000000 -380.000000,257.000000 -394.000000C284.000000 -411.000000,319.000000 -413.000000,336.000000 -413.000000C357.000000 -413.000000,409.000000 -410.000000,431.000000 -376.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_119">
      <path style="fill-rule: evenodd;" d="M526.000000 -319.000000C533.000000 -346.000000,545.000000 -394.000000,545.000000 -399.000000C545.000000 -419.000000,529.000000 -431.000000,512.000000 -431.000000C493.000000 -431.000000,475.000000 -419.000000,469.000000 -402.000000C466.000000 -394.000000,456.000000 -352.000000,449.000000 -327.000000C435.000000 -270.000000,435.000000 -268.000000,420.000000 -212.000000C407.000000 -157.000000,405.000000 -149.000000,404.000000 -120.000000C408.000000 -100.000000,400.000000 -81.000000,376.000000 -51.000000C363.000000 -35.000000,343.000000 -18.000000,309.000000 -18.000000C270.000000 -18.000000,219.000000 -32.000000,219.000000 -110.000000C219.000000 -161.000000,247.000000 -235.000000,267.000000 -286.000000C284.000000 -330.000000,288.000000 -339.000000,288.000000 -356.000000C288.000000 -404.000000,247.000000 -441.000000,193.000000 -441.000000C92.000000 -441.000000,47.000000 -305.000000,47.000000 -288.000000C47.000000 -275.000000,61.000000 -275.000000,64.000000 -275.000000C78.000000 -275.000000,79.000000 -280.000000,82.000000 -291.000000C107.000000 -374.000000,150.000000 -413.000000,190.000000 -413.000000C207.000000 -413.000000,215.000000 -402.000000,215.000000 -378.000000C215.000000 -355.000000,206.000000 -333.000000,201.000000 -320.000000C144.000000 -174.000000,144.000000 -154.000000,144.000000 -123.000000C144.000000 -5.000000,251.000000 10.000000,305.000000 10.000000C324.000000 10.000000,373.000000 10.000000,418.000000 -57.000000C441.000000 -12.000000,496.000000 10.000000,557.000000 10.000000C646.000000 10.000000,690.000000 -67.000000,710.000000 -108.000000C753.000000 -192.000000,780.000000 -317.000000,780.000000 -363.000000C780.000000 -438.000000,737.000000 -442.000000,730.000000 -442.000000C704.000000 -442.000000,676.000000 -415.000000,676.000000 -389.000000C676.000000 -372.000000,686.000000 -364.000000,693.000000 -358.000000C717.000000 -338.000000,730.000000 -310.000000,730.000000 -278.000000C730.000000 -265.000000,688.000000 -18.000000,561.000000 -18.000000C480.000000 -18.000000,480.000000 -90.000000,480.000000 -107.000000C480.000000 -134.000000,484.000000 -150.000000,498.000000 -207.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmbx10_80">
      <path style="fill-rule: evenodd;" d="M289.000000 -302.000000L466.000000 -302.000000C605.000000 -302.000000,721.000000 -374.000000,721.000000 -491.000000C721.000000 -601.000000,622.000000 -686.000000,456.000000 -686.000000L39.000000 -686.000000L39.000000 -639.000000L147.000000 -639.000000L147.000000 -47.000000L39.000000 -47.000000L39.000000 -0.000000L218.000000 -0.000000L77.000000 -3.000000L175.000000 -3.000000L218.000000 -3.000000L261.000000 -3.000000L359.000000 -3.000000L397.000000 -0.000000L397.000000 -47.000000L289.000000 -47.000000M417.000000 -343.000000L283.000000 -343.000000L283.000000 -639.000000L418.000000 -639.000000C568.000000 -639.000000,568.000000 -563.000000,568.000000 -491.000000C568.000000 -420.000000,568.000000 -343.000000,417.000000 -343.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.623413 5.708572)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_99"></use>
    <use xlink:href="#GLYPHcmmi7_99" x="3.573800"></use>
    <use xlink:href="#GLYPHcmmi7_115" x="7.147601"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,18.830048 12.704590)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmbx10_80"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,31.360809 15.095642)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_119"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,40.882629 15.095642)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_99"></use>
    <use xlink:href="#GLYPHcmmi7_115" x="3.573800"></use>
  </g>
</svg></span>, where
<i>wcs</i> denotes the world coordinate system of the 3D calibration model
(see <a href="toc_transformations_poses.html">Transformations / Poses</a>
and <code>“Solution Guide III-C - 3D Vision”</code>).
The relative pose <span title="3" style="vertical-align:-0.230003em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3.97925em" height="1.16113em" viewBox="0 0 63.668076 18.578003">
<!-- Original BoundingBox: -31.834045 -9.289001 31.834030 9.289001 -->
  <defs>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_99">
      <path style="fill-rule: evenodd;" d="M438.000000 -383.000000C402.000000 -377.000000,387.000000 -349.000000,387.000000 -327.000000C387.000000 -300.000000,408.000000 -290.000000,426.000000 -290.000000C448.000000 -290.000000,483.000000 -306.000000,483.000000 -354.000000C483.000000 -422.000000,405.000000 -441.000000,351.000000 -441.000000C201.000000 -441.000000,62.000000 -303.000000,62.000000 -164.000000C62.000000 -78.000000,122.000000 10.000000,247.000000 10.000000C416.000000 10.000000,495.000000 -89.000000,495.000000 -103.000000C495.000000 -109.000000,486.000000 -120.000000,478.000000 -120.000000C472.000000 -120.000000,470.000000 -118.000000,462.000000 -110.000000C384.000000 -18.000000,267.000000 -18.000000,249.000000 -18.000000C177.000000 -18.000000,145.000000 -67.000000,145.000000 -129.000000C145.000000 -158.000000,159.000000 -267.000000,211.000000 -336.000000C249.000000 -385.000000,301.000000 -413.000000,351.000000 -413.000000C365.000000 -413.000000,413.000000 -411.000000,438.000000 -383.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_115">
      <path style="fill-rule: evenodd;" d="M431.000000 -376.000000C405.000000 -370.000000,389.000000 -349.000000,389.000000 -329.000000C389.000000 -306.000000,409.000000 -297.000000,422.000000 -297.000000C432.000000 -297.000000,470.000000 -303.000000,470.000000 -354.000000C470.000000 -419.000000,398.000000 -441.000000,337.000000 -441.000000C181.000000 -441.000000,153.000000 -326.000000,153.000000 -295.000000C153.000000 -258.000000,174.000000 -234.000000,188.000000 -222.000000C214.000000 -202.000000,232.000000 -198.000000,301.000000 -186.000000C322.000000 -182.000000,386.000000 -170.000000,386.000000 -120.000000C386.000000 -103.000000,375.000000 -65.000000,333.000000 -40.000000C294.000000 -18.000000,245.000000 -18.000000,233.000000 -18.000000C193.000000 -18.000000,136.000000 -27.000000,113.000000 -60.000000C146.000000 -64.000000,168.000000 -89.000000,168.000000 -117.000000C168.000000 -142.000000,150.000000 -154.000000,129.000000 -154.000000C100.000000 -154.000000,71.000000 -131.000000,71.000000 -87.000000C71.000000 -27.000000,135.000000 10.000000,232.000000 10.000000C416.000000 10.000000,450.000000 -116.000000,450.000000 -155.000000C450.000000 -247.000000,349.000000 -265.000000,312.000000 -272.000000C303.000000 -274.000000,278.000000 -278.000000,272.000000 -280.000000C235.000000 -287.000000,217.000000 -308.000000,217.000000 -330.000000C217.000000 -353.000000,235.000000 -380.000000,257.000000 -394.000000C284.000000 -411.000000,319.000000 -413.000000,336.000000 -413.000000C357.000000 -413.000000,409.000000 -410.000000,431.000000 -376.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmr7_49">
      <path style="fill-rule: evenodd;" d="M335.000000 -636.000000C335.000000 -663.000000,333.000000 -664.000000,305.000000 -664.000000C241.000000 -601.000000,150.000000 -600.000000,109.000000 -600.000000L109.000000 -564.000000C133.000000 -564.000000,199.000000 -564.000000,254.000000 -592.000000L254.000000 -82.000000C254.000000 -49.000000,254.000000 -36.000000,154.000000 -36.000000L116.000000 -36.000000L116.000000 -0.000000L294.000000 -0.000000L134.000000 -1.000000L257.000000 -4.000000L294.000000 -4.000000L325.000000 -4.000000L451.000000 -1.000000L473.000000 -0.000000L473.000000 -36.000000L435.000000 -36.000000C335.000000 -36.000000,335.000000 -49.000000,335.000000 -82.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmr7_50">
      <path style="fill-rule: evenodd;" d="M505.000000 -182.000000L471.000000 -182.000000C468.000000 -160.000000,458.000000 -101.000000,445.000000 -91.000000C437.000000 -85.000000,360.000000 -85.000000,346.000000 -85.000000L162.000000 -85.000000C267.000000 -178.000000,302.000000 -206.000000,362.000000 -253.000000C436.000000 -312.000000,505.000000 -374.000000,505.000000 -469.000000C505.000000 -590.000000,399.000000 -664.000000,271.000000 -664.000000C147.000000 -664.000000,63.000000 -577.000000,63.000000 -485.000000C63.000000 -434.000000,106.000000 -429.000000,116.000000 -429.000000C140.000000 -429.000000,169.000000 -446.000000,169.000000 -482.000000C169.000000 -500.000000,162.000000 -535.000000,110.000000 -535.000000C141.000000 -606.000000,209.000000 -628.000000,256.000000 -628.000000C356.000000 -628.000000,408.000000 -550.000000,408.000000 -469.000000C408.000000 -382.000000,346.000000 -313.000000,314.000000 -277.000000L73.000000 -39.000000C63.000000 -30.000000,63.000000 -28.000000,63.000000 -0.000000L475.000000 -0.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmbx10_80">
      <path style="fill-rule: evenodd;" d="M289.000000 -302.000000L466.000000 -302.000000C605.000000 -302.000000,721.000000 -374.000000,721.000000 -491.000000C721.000000 -601.000000,622.000000 -686.000000,456.000000 -686.000000L39.000000 -686.000000L39.000000 -639.000000L147.000000 -639.000000L147.000000 -47.000000L39.000000 -47.000000L39.000000 -0.000000L218.000000 -0.000000L77.000000 -3.000000L175.000000 -3.000000L218.000000 -3.000000L261.000000 -3.000000L359.000000 -3.000000L397.000000 -0.000000L397.000000 -47.000000L289.000000 -47.000000M417.000000 -343.000000L283.000000 -343.000000L283.000000 -639.000000L418.000000 -639.000000C568.000000 -639.000000,568.000000 -563.000000,568.000000 -491.000000C568.000000 -420.000000,568.000000 -343.000000,417.000000 -343.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.181946 7.901932)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_99"></use>
    <use xlink:href="#GLYPHcmmi7_99" x="3.573800"></use>
    <use xlink:href="#GLYPHcmmi7_115" x="7.147601"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,17.591629 7.901932)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr7_49"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,24.742538 14.897949)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmbx10_80"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,37.273300 17.289001)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_99"></use>
    <use xlink:href="#GLYPHcmmi7_99" x="3.573800"></use>
    <use xlink:href="#GLYPHcmmi7_115" x="7.147601"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,54.682953 17.289001)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr7_50"></use>
  </g>
</svg></span>,
<a href="#RelPose"><i><code><span data-if="hdevelop" style="display:inline">RelPose</span><span data-if="c" style="display:none">RelPose</span><span data-if="cpp" style="display:none">RelPose</span><span data-if="com" style="display:none">RelPose</span><span data-if="dotnet" style="display:none">relPose</span><span data-if="python" style="display:none">rel_pose</span></code></i></a>, specifies the transformation of points in <i>ccs2</i>
into <i>ccs1</i>. Therewith, the final poses are related with each other
(neglecting differences due to the balancing effects of the multi image
calibration) by:
<span class="pre">
 HomMat3D_NFinalPose2 = INV(HomMat3D_RelPose) * HomMat3D_NFinalPose1 ,
</span>
where HomMat3D_* denotes a homogeneous transformation matrix of the
respective poses and INV() inverts a homogeneous matrix.
</p>
<p>The computed average errors returned in <a href="#Errors"><i><code><span data-if="hdevelop" style="display:inline">Errors</span><span data-if="c" style="display:none">Errors</span><span data-if="cpp" style="display:none">Errors</span><span data-if="com" style="display:none">Errors</span><span data-if="dotnet" style="display:none">errors</span><span data-if="python" style="display:none">errors</span></code></i></a> give an
impression of the accuracy of the calibration.  Using the determined
camera parameters, they denote the average euclidean distance
between the projection of the mark centers to their extracted image
coordinates.
</p>
<p>For cameras with telecentric lenses, additional conditions must be
fulfilled for the setup.  They can be found in the chapter
<a href="toc_calibration.html">Calibration</a>.
</p>
<h2 id="sec_attention">注意</h2>
<p>Stereo setups that contain cameras with and without hypercentric
lenses at the same time are not supported.  Furthermore, stereo
setups that contain area scan and line scan cameras at the same time
are not supported.</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="NX" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NX</span><span data-if="c" style="display:none">NX</span><span data-if="cpp" style="display:none">NX</span><span data-if="com" style="display:none">NX</span><span data-if="dotnet" style="display:none">NX</span><span data-if="python" style="display:none">nx</span></code></b> (input_control)  </span><span>number-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Ordered Tuple with all X-coordinates
of the calibration marks (in meters).</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NY" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NY</span><span data-if="c" style="display:none">NY</span><span data-if="cpp" style="display:none">NY</span><span data-if="com" style="display:none">NY</span><span data-if="dotnet" style="display:none">NY</span><span data-if="python" style="display:none">ny</span></code></b> (input_control)  </span><span>number-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Ordered Tuple with all Y-coordinates
of the calibration marks (in meters).</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>NY == NX</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NZ" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NZ</span><span data-if="c" style="display:none">NZ</span><span data-if="cpp" style="display:none">NZ</span><span data-if="com" style="display:none">NZ</span><span data-if="dotnet" style="display:none">NZ</span><span data-if="python" style="display:none">nz</span></code></b> (input_control)  </span><span>number-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Ordered Tuple with all Z-coordinates
of the calibration marks (in meters).</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>NZ == NX</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NRow1" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NRow1</span><span data-if="c" style="display:none">NRow1</span><span data-if="cpp" style="display:none">NRow1</span><span data-if="com" style="display:none">NRow1</span><span data-if="dotnet" style="display:none">NRow1</span><span data-if="python" style="display:none">nrow_1</span></code></b> (input_control)  </span><span>number-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Ordered Tuple with all row-coordinates
of the extracted calibration marks of camera 1
(in pixels).</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NCol1" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NCol1</span><span data-if="c" style="display:none">NCol1</span><span data-if="cpp" style="display:none">NCol1</span><span data-if="com" style="display:none">NCol1</span><span data-if="dotnet" style="display:none">NCol1</span><span data-if="python" style="display:none">ncol_1</span></code></b> (input_control)  </span><span>number-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Ordered Tuple with all column-coordinates
of the extracted calibration marks of camera 1
(in pixels).</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>NCol1 == NRow1</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NRow2" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NRow2</span><span data-if="c" style="display:none">NRow2</span><span data-if="cpp" style="display:none">NRow2</span><span data-if="com" style="display:none">NRow2</span><span data-if="dotnet" style="display:none">NRow2</span><span data-if="python" style="display:none">nrow_2</span></code></b> (input_control)  </span><span>number-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Ordered Tuple with all row-coordinates
of the extracted calibration marks of camera 2
(in pixels).</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>NRow2 == NRow1</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NCol2" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NCol2</span><span data-if="c" style="display:none">NCol2</span><span data-if="cpp" style="display:none">NCol2</span><span data-if="com" style="display:none">NCol2</span><span data-if="dotnet" style="display:none">NCol2</span><span data-if="python" style="display:none">ncol_2</span></code></b> (input_control)  </span><span>number-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Ordered Tuple with all column-coordinates
of the extracted calibration marks of camera 2
(in pixels).</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>NCol2 == NRow1</p>
</div>
  <div class="par">
<div class="parhead">
<span id="StartCamParam1" class="parname"><b><code><span data-if="hdevelop" style="display:inline">StartCamParam1</span><span data-if="c" style="display:none">StartCamParam1</span><span data-if="cpp" style="display:none">StartCamParam1</span><span data-if="com" style="display:none">StartCamParam1</span><span data-if="dotnet" style="display:none">startCamParam1</span><span data-if="python" style="display:none">start_cam_param_1</span></code></b> (input_control)  </span><span>campar <code>→</code> <span data-if="dotnet" style="display:none"><a href="HCamPar.html">HCamPar</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int, str]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">Initial values for the internal parameters of camera 1.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="StartCamParam2" class="parname"><b><code><span data-if="hdevelop" style="display:inline">StartCamParam2</span><span data-if="c" style="display:none">StartCamParam2</span><span data-if="cpp" style="display:none">StartCamParam2</span><span data-if="com" style="display:none">StartCamParam2</span><span data-if="dotnet" style="display:none">startCamParam2</span><span data-if="python" style="display:none">start_cam_param_2</span></code></b> (input_control)  </span><span>campar <code>→</code> <span data-if="dotnet" style="display:none"><a href="HCamPar.html">HCamPar</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int, str]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">Initial values for the internal parameters of camera 2.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NStartPose1" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NStartPose1</span><span data-if="c" style="display:none">NStartPose1</span><span data-if="cpp" style="display:none">NStartPose1</span><span data-if="com" style="display:none">NStartPose1</span><span data-if="dotnet" style="display:none">NStartPose1</span><span data-if="python" style="display:none">nstart_pose_1</span></code></b> (input_control)  </span><span>pose(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HPose.html">HPose</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Ordered tuple with all initial values for the
poses of the calibration model in relation to
camera 1.</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>NStartPose1 == 7 * NRow1 / NX</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NStartPose2" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NStartPose2</span><span data-if="c" style="display:none">NStartPose2</span><span data-if="cpp" style="display:none">NStartPose2</span><span data-if="com" style="display:none">NStartPose2</span><span data-if="dotnet" style="display:none">NStartPose2</span><span data-if="python" style="display:none">nstart_pose_2</span></code></b> (input_control)  </span><span>pose(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HPose.html">HPose</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Ordered tuple with all initial values for the
poses of the calibration model in relation to
camera 2.</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>NStartPose2 == 7 * NRow1 / NX</p>
</div>
  <div class="par">
<div class="parhead">
<span id="EstimateParams" class="parname"><b><code><span data-if="hdevelop" style="display:inline">EstimateParams</span><span data-if="c" style="display:none">EstimateParams</span><span data-if="cpp" style="display:none">EstimateParams</span><span data-if="com" style="display:none">EstimateParams</span><span data-if="dotnet" style="display:none">estimateParams</span><span data-if="python" style="display:none">estimate_params</span></code></b> (input_control)  </span><span>string-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Camera parameters to be estimated.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'all'</span>
    <span data-if="c" style="display:none">"all"</span>
    <span data-if="cpp" style="display:none">"all"</span>
    <span data-if="com" style="display:none">"all"</span>
    <span data-if="dotnet" style="display:none">"all"</span>
    <span data-if="python" style="display:none">"all"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'all'</span><span data-if="c" style="display:none">"all"</span><span data-if="cpp" style="display:none">"all"</span><span data-if="com" style="display:none">"all"</span><span data-if="dotnet" style="display:none">"all"</span><span data-if="python" style="display:none">"all"</span>, <span data-if="hdevelop" style="display:inline">'alpha_caltabs'</span><span data-if="c" style="display:none">"alpha_caltabs"</span><span data-if="cpp" style="display:none">"alpha_caltabs"</span><span data-if="com" style="display:none">"alpha_caltabs"</span><span data-if="dotnet" style="display:none">"alpha_caltabs"</span><span data-if="python" style="display:none">"alpha_caltabs"</span>, <span data-if="hdevelop" style="display:inline">'alpha_rel'</span><span data-if="c" style="display:none">"alpha_rel"</span><span data-if="cpp" style="display:none">"alpha_rel"</span><span data-if="com" style="display:none">"alpha_rel"</span><span data-if="dotnet" style="display:none">"alpha_rel"</span><span data-if="python" style="display:none">"alpha_rel"</span>, <span data-if="hdevelop" style="display:inline">'beta_caltabs'</span><span data-if="c" style="display:none">"beta_caltabs"</span><span data-if="cpp" style="display:none">"beta_caltabs"</span><span data-if="com" style="display:none">"beta_caltabs"</span><span data-if="dotnet" style="display:none">"beta_caltabs"</span><span data-if="python" style="display:none">"beta_caltabs"</span>, <span data-if="hdevelop" style="display:inline">'beta_rel'</span><span data-if="c" style="display:none">"beta_rel"</span><span data-if="cpp" style="display:none">"beta_rel"</span><span data-if="com" style="display:none">"beta_rel"</span><span data-if="dotnet" style="display:none">"beta_rel"</span><span data-if="python" style="display:none">"beta_rel"</span>, <span data-if="hdevelop" style="display:inline">'cam_param1'</span><span data-if="c" style="display:none">"cam_param1"</span><span data-if="cpp" style="display:none">"cam_param1"</span><span data-if="com" style="display:none">"cam_param1"</span><span data-if="dotnet" style="display:none">"cam_param1"</span><span data-if="python" style="display:none">"cam_param1"</span>, <span data-if="hdevelop" style="display:inline">'cam_param2'</span><span data-if="c" style="display:none">"cam_param2"</span><span data-if="cpp" style="display:none">"cam_param2"</span><span data-if="com" style="display:none">"cam_param2"</span><span data-if="dotnet" style="display:none">"cam_param2"</span><span data-if="python" style="display:none">"cam_param2"</span>, <span data-if="hdevelop" style="display:inline">'common_motion_vector'</span><span data-if="c" style="display:none">"common_motion_vector"</span><span data-if="cpp" style="display:none">"common_motion_vector"</span><span data-if="com" style="display:none">"common_motion_vector"</span><span data-if="dotnet" style="display:none">"common_motion_vector"</span><span data-if="python" style="display:none">"common_motion_vector"</span>, <span data-if="hdevelop" style="display:inline">'cx1'</span><span data-if="c" style="display:none">"cx1"</span><span data-if="cpp" style="display:none">"cx1"</span><span data-if="com" style="display:none">"cx1"</span><span data-if="dotnet" style="display:none">"cx1"</span><span data-if="python" style="display:none">"cx1"</span>, <span data-if="hdevelop" style="display:inline">'cx2'</span><span data-if="c" style="display:none">"cx2"</span><span data-if="cpp" style="display:none">"cx2"</span><span data-if="com" style="display:none">"cx2"</span><span data-if="dotnet" style="display:none">"cx2"</span><span data-if="python" style="display:none">"cx2"</span>, <span data-if="hdevelop" style="display:inline">'cy1'</span><span data-if="c" style="display:none">"cy1"</span><span data-if="cpp" style="display:none">"cy1"</span><span data-if="com" style="display:none">"cy1"</span><span data-if="dotnet" style="display:none">"cy1"</span><span data-if="python" style="display:none">"cy1"</span>, <span data-if="hdevelop" style="display:inline">'cy2'</span><span data-if="c" style="display:none">"cy2"</span><span data-if="cpp" style="display:none">"cy2"</span><span data-if="com" style="display:none">"cy2"</span><span data-if="dotnet" style="display:none">"cy2"</span><span data-if="python" style="display:none">"cy2"</span>, <span data-if="hdevelop" style="display:inline">'focus1'</span><span data-if="c" style="display:none">"focus1"</span><span data-if="cpp" style="display:none">"focus1"</span><span data-if="com" style="display:none">"focus1"</span><span data-if="dotnet" style="display:none">"focus1"</span><span data-if="python" style="display:none">"focus1"</span>, <span data-if="hdevelop" style="display:inline">'focus2'</span><span data-if="c" style="display:none">"focus2"</span><span data-if="cpp" style="display:none">"focus2"</span><span data-if="com" style="display:none">"focus2"</span><span data-if="dotnet" style="display:none">"focus2"</span><span data-if="python" style="display:none">"focus2"</span>, <span data-if="hdevelop" style="display:inline">'gamma_caltabs'</span><span data-if="c" style="display:none">"gamma_caltabs"</span><span data-if="cpp" style="display:none">"gamma_caltabs"</span><span data-if="com" style="display:none">"gamma_caltabs"</span><span data-if="dotnet" style="display:none">"gamma_caltabs"</span><span data-if="python" style="display:none">"gamma_caltabs"</span>, <span data-if="hdevelop" style="display:inline">'gamma_rel'</span><span data-if="c" style="display:none">"gamma_rel"</span><span data-if="cpp" style="display:none">"gamma_rel"</span><span data-if="com" style="display:none">"gamma_rel"</span><span data-if="dotnet" style="display:none">"gamma_rel"</span><span data-if="python" style="display:none">"gamma_rel"</span>, <span data-if="hdevelop" style="display:inline">'image_plane_dist1'</span><span data-if="c" style="display:none">"image_plane_dist1"</span><span data-if="cpp" style="display:none">"image_plane_dist1"</span><span data-if="com" style="display:none">"image_plane_dist1"</span><span data-if="dotnet" style="display:none">"image_plane_dist1"</span><span data-if="python" style="display:none">"image_plane_dist1"</span>, <span data-if="hdevelop" style="display:inline">'image_plane_dist2'</span><span data-if="c" style="display:none">"image_plane_dist2"</span><span data-if="cpp" style="display:none">"image_plane_dist2"</span><span data-if="com" style="display:none">"image_plane_dist2"</span><span data-if="dotnet" style="display:none">"image_plane_dist2"</span><span data-if="python" style="display:none">"image_plane_dist2"</span>, <span data-if="hdevelop" style="display:inline">'k1_1'</span><span data-if="c" style="display:none">"k1_1"</span><span data-if="cpp" style="display:none">"k1_1"</span><span data-if="com" style="display:none">"k1_1"</span><span data-if="dotnet" style="display:none">"k1_1"</span><span data-if="python" style="display:none">"k1_1"</span>, <span data-if="hdevelop" style="display:inline">'k1_2'</span><span data-if="c" style="display:none">"k1_2"</span><span data-if="cpp" style="display:none">"k1_2"</span><span data-if="com" style="display:none">"k1_2"</span><span data-if="dotnet" style="display:none">"k1_2"</span><span data-if="python" style="display:none">"k1_2"</span>, <span data-if="hdevelop" style="display:inline">'k2_1'</span><span data-if="c" style="display:none">"k2_1"</span><span data-if="cpp" style="display:none">"k2_1"</span><span data-if="com" style="display:none">"k2_1"</span><span data-if="dotnet" style="display:none">"k2_1"</span><span data-if="python" style="display:none">"k2_1"</span>, <span data-if="hdevelop" style="display:inline">'k2_2'</span><span data-if="c" style="display:none">"k2_2"</span><span data-if="cpp" style="display:none">"k2_2"</span><span data-if="com" style="display:none">"k2_2"</span><span data-if="dotnet" style="display:none">"k2_2"</span><span data-if="python" style="display:none">"k2_2"</span>, <span data-if="hdevelop" style="display:inline">'k3_1'</span><span data-if="c" style="display:none">"k3_1"</span><span data-if="cpp" style="display:none">"k3_1"</span><span data-if="com" style="display:none">"k3_1"</span><span data-if="dotnet" style="display:none">"k3_1"</span><span data-if="python" style="display:none">"k3_1"</span>, <span data-if="hdevelop" style="display:inline">'k3_2'</span><span data-if="c" style="display:none">"k3_2"</span><span data-if="cpp" style="display:none">"k3_2"</span><span data-if="com" style="display:none">"k3_2"</span><span data-if="dotnet" style="display:none">"k3_2"</span><span data-if="python" style="display:none">"k3_2"</span>, <span data-if="hdevelop" style="display:inline">'kappa1'</span><span data-if="c" style="display:none">"kappa1"</span><span data-if="cpp" style="display:none">"kappa1"</span><span data-if="com" style="display:none">"kappa1"</span><span data-if="dotnet" style="display:none">"kappa1"</span><span data-if="python" style="display:none">"kappa1"</span>, <span data-if="hdevelop" style="display:inline">'kappa2'</span><span data-if="c" style="display:none">"kappa2"</span><span data-if="cpp" style="display:none">"kappa2"</span><span data-if="com" style="display:none">"kappa2"</span><span data-if="dotnet" style="display:none">"kappa2"</span><span data-if="python" style="display:none">"kappa2"</span>, <span data-if="hdevelop" style="display:inline">'magnification1'</span><span data-if="c" style="display:none">"magnification1"</span><span data-if="cpp" style="display:none">"magnification1"</span><span data-if="com" style="display:none">"magnification1"</span><span data-if="dotnet" style="display:none">"magnification1"</span><span data-if="python" style="display:none">"magnification1"</span>, <span data-if="hdevelop" style="display:inline">'magnification2'</span><span data-if="c" style="display:none">"magnification2"</span><span data-if="cpp" style="display:none">"magnification2"</span><span data-if="com" style="display:none">"magnification2"</span><span data-if="dotnet" style="display:none">"magnification2"</span><span data-if="python" style="display:none">"magnification2"</span>, <span data-if="hdevelop" style="display:inline">'poly_1'</span><span data-if="c" style="display:none">"poly_1"</span><span data-if="cpp" style="display:none">"poly_1"</span><span data-if="com" style="display:none">"poly_1"</span><span data-if="dotnet" style="display:none">"poly_1"</span><span data-if="python" style="display:none">"poly_1"</span>, <span data-if="hdevelop" style="display:inline">'poly_2'</span><span data-if="c" style="display:none">"poly_2"</span><span data-if="cpp" style="display:none">"poly_2"</span><span data-if="com" style="display:none">"poly_2"</span><span data-if="dotnet" style="display:none">"poly_2"</span><span data-if="python" style="display:none">"poly_2"</span>, <span data-if="hdevelop" style="display:inline">'poly_tan_2_1'</span><span data-if="c" style="display:none">"poly_tan_2_1"</span><span data-if="cpp" style="display:none">"poly_tan_2_1"</span><span data-if="com" style="display:none">"poly_tan_2_1"</span><span data-if="dotnet" style="display:none">"poly_tan_2_1"</span><span data-if="python" style="display:none">"poly_tan_2_1"</span>, <span data-if="hdevelop" style="display:inline">'poly_tan_2_2'</span><span data-if="c" style="display:none">"poly_tan_2_2"</span><span data-if="cpp" style="display:none">"poly_tan_2_2"</span><span data-if="com" style="display:none">"poly_tan_2_2"</span><span data-if="dotnet" style="display:none">"poly_tan_2_2"</span><span data-if="python" style="display:none">"poly_tan_2_2"</span>, <span data-if="hdevelop" style="display:inline">'pose'</span><span data-if="c" style="display:none">"pose"</span><span data-if="cpp" style="display:none">"pose"</span><span data-if="com" style="display:none">"pose"</span><span data-if="dotnet" style="display:none">"pose"</span><span data-if="python" style="display:none">"pose"</span>, <span data-if="hdevelop" style="display:inline">'pose_caltabs'</span><span data-if="c" style="display:none">"pose_caltabs"</span><span data-if="cpp" style="display:none">"pose_caltabs"</span><span data-if="com" style="display:none">"pose_caltabs"</span><span data-if="dotnet" style="display:none">"pose_caltabs"</span><span data-if="python" style="display:none">"pose_caltabs"</span>, <span data-if="hdevelop" style="display:inline">'pose_rel'</span><span data-if="c" style="display:none">"pose_rel"</span><span data-if="cpp" style="display:none">"pose_rel"</span><span data-if="com" style="display:none">"pose_rel"</span><span data-if="dotnet" style="display:none">"pose_rel"</span><span data-if="python" style="display:none">"pose_rel"</span>, <span data-if="hdevelop" style="display:inline">'sx1'</span><span data-if="c" style="display:none">"sx1"</span><span data-if="cpp" style="display:none">"sx1"</span><span data-if="com" style="display:none">"sx1"</span><span data-if="dotnet" style="display:none">"sx1"</span><span data-if="python" style="display:none">"sx1"</span>, <span data-if="hdevelop" style="display:inline">'sx2'</span><span data-if="c" style="display:none">"sx2"</span><span data-if="cpp" style="display:none">"sx2"</span><span data-if="com" style="display:none">"sx2"</span><span data-if="dotnet" style="display:none">"sx2"</span><span data-if="python" style="display:none">"sx2"</span>, <span data-if="hdevelop" style="display:inline">'sy1'</span><span data-if="c" style="display:none">"sy1"</span><span data-if="cpp" style="display:none">"sy1"</span><span data-if="com" style="display:none">"sy1"</span><span data-if="dotnet" style="display:none">"sy1"</span><span data-if="python" style="display:none">"sy1"</span>, <span data-if="hdevelop" style="display:inline">'sy2'</span><span data-if="c" style="display:none">"sy2"</span><span data-if="cpp" style="display:none">"sy2"</span><span data-if="com" style="display:none">"sy2"</span><span data-if="dotnet" style="display:none">"sy2"</span><span data-if="python" style="display:none">"sy2"</span>, <span data-if="hdevelop" style="display:inline">'tilt1'</span><span data-if="c" style="display:none">"tilt1"</span><span data-if="cpp" style="display:none">"tilt1"</span><span data-if="com" style="display:none">"tilt1"</span><span data-if="dotnet" style="display:none">"tilt1"</span><span data-if="python" style="display:none">"tilt1"</span>, <span data-if="hdevelop" style="display:inline">'tilt2'</span><span data-if="c" style="display:none">"tilt2"</span><span data-if="cpp" style="display:none">"tilt2"</span><span data-if="com" style="display:none">"tilt2"</span><span data-if="dotnet" style="display:none">"tilt2"</span><span data-if="python" style="display:none">"tilt2"</span>, <span data-if="hdevelop" style="display:inline">'transx_caltabs'</span><span data-if="c" style="display:none">"transx_caltabs"</span><span data-if="cpp" style="display:none">"transx_caltabs"</span><span data-if="com" style="display:none">"transx_caltabs"</span><span data-if="dotnet" style="display:none">"transx_caltabs"</span><span data-if="python" style="display:none">"transx_caltabs"</span>, <span data-if="hdevelop" style="display:inline">'transx_rel'</span><span data-if="c" style="display:none">"transx_rel"</span><span data-if="cpp" style="display:none">"transx_rel"</span><span data-if="com" style="display:none">"transx_rel"</span><span data-if="dotnet" style="display:none">"transx_rel"</span><span data-if="python" style="display:none">"transx_rel"</span>, <span data-if="hdevelop" style="display:inline">'transy_caltabs'</span><span data-if="c" style="display:none">"transy_caltabs"</span><span data-if="cpp" style="display:none">"transy_caltabs"</span><span data-if="com" style="display:none">"transy_caltabs"</span><span data-if="dotnet" style="display:none">"transy_caltabs"</span><span data-if="python" style="display:none">"transy_caltabs"</span>, <span data-if="hdevelop" style="display:inline">'transy_rel'</span><span data-if="c" style="display:none">"transy_rel"</span><span data-if="cpp" style="display:none">"transy_rel"</span><span data-if="com" style="display:none">"transy_rel"</span><span data-if="dotnet" style="display:none">"transy_rel"</span><span data-if="python" style="display:none">"transy_rel"</span>, <span data-if="hdevelop" style="display:inline">'transz_caltabs'</span><span data-if="c" style="display:none">"transz_caltabs"</span><span data-if="cpp" style="display:none">"transz_caltabs"</span><span data-if="com" style="display:none">"transz_caltabs"</span><span data-if="dotnet" style="display:none">"transz_caltabs"</span><span data-if="python" style="display:none">"transz_caltabs"</span>, <span data-if="hdevelop" style="display:inline">'transz_rel'</span><span data-if="c" style="display:none">"transz_rel"</span><span data-if="cpp" style="display:none">"transz_rel"</span><span data-if="com" style="display:none">"transz_rel"</span><span data-if="dotnet" style="display:none">"transz_rel"</span><span data-if="python" style="display:none">"transz_rel"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="CamParam1" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CamParam1</span><span data-if="c" style="display:none">CamParam1</span><span data-if="cpp" style="display:none">CamParam1</span><span data-if="com" style="display:none">CamParam1</span><span data-if="dotnet" style="display:none">camParam1</span><span data-if="python" style="display:none">cam_param_1</span></code></b> (output_control)  </span><span>campar <code>→</code> <span data-if="dotnet" style="display:none"><a href="HCamPar.html">HCamPar</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int, str]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">Internal parameters of camera 1.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CamParam2" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CamParam2</span><span data-if="c" style="display:none">CamParam2</span><span data-if="cpp" style="display:none">CamParam2</span><span data-if="com" style="display:none">CamParam2</span><span data-if="dotnet" style="display:none">camParam2</span><span data-if="python" style="display:none">cam_param_2</span></code></b> (output_control)  </span><span>campar <code>→</code> <span data-if="dotnet" style="display:none"><a href="HCamPar.html">HCamPar</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int, str]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">Internal parameters of camera 2.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NFinalPose1" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NFinalPose1</span><span data-if="c" style="display:none">NFinalPose1</span><span data-if="cpp" style="display:none">NFinalPose1</span><span data-if="com" style="display:none">NFinalPose1</span><span data-if="dotnet" style="display:none">NFinalPose1</span><span data-if="python" style="display:none">nfinal_pose_1</span></code></b> (output_control)  </span><span>pose(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HPose.html">HPose</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Ordered tuple with all poses of the calibration model
in relation to camera 1.</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>NFinalPose1 == 7 * NRow1 / NX</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NFinalPose2" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NFinalPose2</span><span data-if="c" style="display:none">NFinalPose2</span><span data-if="cpp" style="display:none">NFinalPose2</span><span data-if="com" style="display:none">NFinalPose2</span><span data-if="dotnet" style="display:none">NFinalPose2</span><span data-if="python" style="display:none">nfinal_pose_2</span></code></b> (output_control)  </span><span>pose(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HPose.html">HPose</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Ordered tuple with all poses of the calibration model
in relation to camera 2.</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>NFinalPose2 == 7 * NRow1 / NX</p>
</div>
  <div class="par">
<div class="parhead">
<span id="RelPose" class="parname"><b><code><span data-if="hdevelop" style="display:inline">RelPose</span><span data-if="c" style="display:none">RelPose</span><span data-if="cpp" style="display:none">RelPose</span><span data-if="com" style="display:none">RelPose</span><span data-if="dotnet" style="display:none">relPose</span><span data-if="python" style="display:none">rel_pose</span></code></b> (output_control)  </span><span>pose <code>→</code> <span data-if="dotnet" style="display:none"><a href="HPose.html">HPose</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Pose of camera 2 in relation to camera 1.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Errors" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Errors</span><span data-if="c" style="display:none">Errors</span><span data-if="cpp" style="display:none">Errors</span><span data-if="com" style="display:none">Errors</span><span data-if="dotnet" style="display:none">errors</span><span data-if="python" style="display:none">errors</span></code></b> (output_control)  </span><span>real(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Average error distances in pixels.</p>
</div>
<div data-if="hdevelop" style="display:inline">
<h2 id="sec_example_hdevelop">例程 (HDevelop)</h2>
<pre class="example">
* Open image source.
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, \
                   'default', 'images_l.seq', 'default', 0, -1, AcqHandle1)
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, \
                   'default', 'images_r.seq', 'default', 1, -1, AcqHandle2)

* Initialize the start parameters.
caltab_points ('caltab_30mm.descr', X, Y, Z)
StartCamParam1 := ['area_scan_division', 0.0125, 0, 7.4e-6, 7.4e-6, \
                   Width/2.0, Height/2.0, Width, Height]
StartCamParam2 := StartCamParam1
Rows1 := []
Cols1 := []
StartPoses1 := []
Rows2 := []
Cols2 := []
StartPoses2 := []

* Find calibration marks and startposes.
for i := 0 to 11 by 1
  grab_image_async (Image1, AcqHandle1, -1)
  grab_image_async (Image2, AcqHandle2, -1)
  find_caltab (Image1, CalPlate1, 'caltab_30mm.descr', 3, 120, 5)
  find_caltab (Image2, CalPlate2, 'caltab_30mm.descr', 3, 120, 5)
  find_marks_and_pose (Image1, CalPlate1, 'caltab_30mm.descr', \
                       StartCamParam1, 128, 10, 20, 0.7, 5, 100, \
                       RCoord1, CCoord1, StartPose1)
  Rows1 := [Rows1,RCoord1]
  Cols1 := [Cols1,CCoord1]
  StartPoses1 := [StartPoses1,StartPose1]
  find_marks_and_pose (Image2, CalPlate2, 'caltab_30mm.descr', \
                       StartCamParam2, 128, 10, 20, 0.7, 5, 100, \
                       RCoord2, CCoord2, StartPose2)
  Rows2 := [Rows2,RCoord2]
  Cols2 := [Cols2,CCoord2]
  StartPoses2 := [StartPoses2,StartPose2]
endfor

* Calibrate the stereo rig.
binocular_calibration (X, Y, Z, Rows1, Cols1, Rows2, Cols2, StartCamParam1, \
                       StartCamParam2, StartPoses1, StartPoses2, 'all', \
                       CamParam1, CamParam2, NFinalPose1, NFinalPose2, \
                       RelPose, Errors)
* Archive the results.
write_cam_par (CamParam1, 'cam_left-125.dat')
write_cam_par (CamParam2, 'cam_right-125.dat')
write_pose (RelPose, 'rel_pose.dat')

* Rectify the stereo images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', 'bilinear', \
                                 CamParamRect1, CamParamRect2, \
                                 CamPoseRect1, CamPoseRect2, \
                                 RelPoseRect)
map_image (Image1, Map1, ImageMapped1)
map_image (Image2, Map2, ImageMapped2)
</pre>
</div>
<div data-if="c" style="display:none">
<h2 id="sec_example_c">例程 (HDevelop)</h2>
<pre class="example">
* Open image source.
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, \
                   'default', 'images_l.seq', 'default', 0, -1, AcqHandle1)
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, \
                   'default', 'images_r.seq', 'default', 1, -1, AcqHandle2)

* Initialize the start parameters.
caltab_points ('caltab_30mm.descr', X, Y, Z)
StartCamParam1 := ['area_scan_division', 0.0125, 0, 7.4e-6, 7.4e-6, \
                   Width/2.0, Height/2.0, Width, Height]
StartCamParam2 := StartCamParam1
Rows1 := []
Cols1 := []
StartPoses1 := []
Rows2 := []
Cols2 := []
StartPoses2 := []

* Find calibration marks and startposes.
for i := 0 to 11 by 1
  grab_image_async (Image1, AcqHandle1, -1)
  grab_image_async (Image2, AcqHandle2, -1)
  find_caltab (Image1, CalPlate1, 'caltab_30mm.descr', 3, 120, 5)
  find_caltab (Image2, CalPlate2, 'caltab_30mm.descr', 3, 120, 5)
  find_marks_and_pose (Image1, CalPlate1, 'caltab_30mm.descr', \
                       StartCamParam1, 128, 10, 20, 0.7, 5, 100, \
                       RCoord1, CCoord1, StartPose1)
  Rows1 := [Rows1,RCoord1]
  Cols1 := [Cols1,CCoord1]
  StartPoses1 := [StartPoses1,StartPose1]
  find_marks_and_pose (Image2, CalPlate2, 'caltab_30mm.descr', \
                       StartCamParam2, 128, 10, 20, 0.7, 5, 100, \
                       RCoord2, CCoord2, StartPose2)
  Rows2 := [Rows2,RCoord2]
  Cols2 := [Cols2,CCoord2]
  StartPoses2 := [StartPoses2,StartPose2]
endfor

* Calibrate the stereo rig.
binocular_calibration (X, Y, Z, Rows1, Cols1, Rows2, Cols2, StartCamParam1, \
                       StartCamParam2, StartPoses1, StartPoses2, 'all', \
                       CamParam1, CamParam2, NFinalPose1, NFinalPose2, \
                       RelPose, Errors)
* Archive the results.
write_cam_par (CamParam1, 'cam_left-125.dat')
write_cam_par (CamParam2, 'cam_right-125.dat')
write_pose (RelPose, 'rel_pose.dat')

* Rectify the stereo images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', 'bilinear', \
                                 CamParamRect1, CamParamRect2, \
                                 CamPoseRect1, CamPoseRect2, \
                                 RelPoseRect)
map_image (Image1, Map1, ImageMapped1)
map_image (Image2, Map2, ImageMapped2)
</pre>
</div>
<div data-if="cpp" style="display:none">
<h2 id="sec_example_cpp">例程 (HDevelop)</h2>
<pre class="example">
* Open image source.
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, \
                   'default', 'images_l.seq', 'default', 0, -1, AcqHandle1)
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, \
                   'default', 'images_r.seq', 'default', 1, -1, AcqHandle2)

* Initialize the start parameters.
caltab_points ('caltab_30mm.descr', X, Y, Z)
StartCamParam1 := ['area_scan_division', 0.0125, 0, 7.4e-6, 7.4e-6, \
                   Width/2.0, Height/2.0, Width, Height]
StartCamParam2 := StartCamParam1
Rows1 := []
Cols1 := []
StartPoses1 := []
Rows2 := []
Cols2 := []
StartPoses2 := []

* Find calibration marks and startposes.
for i := 0 to 11 by 1
  grab_image_async (Image1, AcqHandle1, -1)
  grab_image_async (Image2, AcqHandle2, -1)
  find_caltab (Image1, CalPlate1, 'caltab_30mm.descr', 3, 120, 5)
  find_caltab (Image2, CalPlate2, 'caltab_30mm.descr', 3, 120, 5)
  find_marks_and_pose (Image1, CalPlate1, 'caltab_30mm.descr', \
                       StartCamParam1, 128, 10, 20, 0.7, 5, 100, \
                       RCoord1, CCoord1, StartPose1)
  Rows1 := [Rows1,RCoord1]
  Cols1 := [Cols1,CCoord1]
  StartPoses1 := [StartPoses1,StartPose1]
  find_marks_and_pose (Image2, CalPlate2, 'caltab_30mm.descr', \
                       StartCamParam2, 128, 10, 20, 0.7, 5, 100, \
                       RCoord2, CCoord2, StartPose2)
  Rows2 := [Rows2,RCoord2]
  Cols2 := [Cols2,CCoord2]
  StartPoses2 := [StartPoses2,StartPose2]
endfor

* Calibrate the stereo rig.
binocular_calibration (X, Y, Z, Rows1, Cols1, Rows2, Cols2, StartCamParam1, \
                       StartCamParam2, StartPoses1, StartPoses2, 'all', \
                       CamParam1, CamParam2, NFinalPose1, NFinalPose2, \
                       RelPose, Errors)
* Archive the results.
write_cam_par (CamParam1, 'cam_left-125.dat')
write_cam_par (CamParam2, 'cam_right-125.dat')
write_pose (RelPose, 'rel_pose.dat')

* Rectify the stereo images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', 'bilinear', \
                                 CamParamRect1, CamParamRect2, \
                                 CamPoseRect1, CamPoseRect2, \
                                 RelPoseRect)
map_image (Image1, Map1, ImageMapped1)
map_image (Image2, Map2, ImageMapped2)
</pre>
</div>
<div data-if="com" style="display:none">
<h2 id="sec_example_com">例程 (HDevelop)</h2>
<pre class="example">
* Open image source.
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, \
                   'default', 'images_l.seq', 'default', 0, -1, AcqHandle1)
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, \
                   'default', 'images_r.seq', 'default', 1, -1, AcqHandle2)

* Initialize the start parameters.
caltab_points ('caltab_30mm.descr', X, Y, Z)
StartCamParam1 := ['area_scan_division', 0.0125, 0, 7.4e-6, 7.4e-6, \
                   Width/2.0, Height/2.0, Width, Height]
StartCamParam2 := StartCamParam1
Rows1 := []
Cols1 := []
StartPoses1 := []
Rows2 := []
Cols2 := []
StartPoses2 := []

* Find calibration marks and startposes.
for i := 0 to 11 by 1
  grab_image_async (Image1, AcqHandle1, -1)
  grab_image_async (Image2, AcqHandle2, -1)
  find_caltab (Image1, CalPlate1, 'caltab_30mm.descr', 3, 120, 5)
  find_caltab (Image2, CalPlate2, 'caltab_30mm.descr', 3, 120, 5)
  find_marks_and_pose (Image1, CalPlate1, 'caltab_30mm.descr', \
                       StartCamParam1, 128, 10, 20, 0.7, 5, 100, \
                       RCoord1, CCoord1, StartPose1)
  Rows1 := [Rows1,RCoord1]
  Cols1 := [Cols1,CCoord1]
  StartPoses1 := [StartPoses1,StartPose1]
  find_marks_and_pose (Image2, CalPlate2, 'caltab_30mm.descr', \
                       StartCamParam2, 128, 10, 20, 0.7, 5, 100, \
                       RCoord2, CCoord2, StartPose2)
  Rows2 := [Rows2,RCoord2]
  Cols2 := [Cols2,CCoord2]
  StartPoses2 := [StartPoses2,StartPose2]
endfor

* Calibrate the stereo rig.
binocular_calibration (X, Y, Z, Rows1, Cols1, Rows2, Cols2, StartCamParam1, \
                       StartCamParam2, StartPoses1, StartPoses2, 'all', \
                       CamParam1, CamParam2, NFinalPose1, NFinalPose2, \
                       RelPose, Errors)
* Archive the results.
write_cam_par (CamParam1, 'cam_left-125.dat')
write_cam_par (CamParam2, 'cam_right-125.dat')
write_pose (RelPose, 'rel_pose.dat')

* Rectify the stereo images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', 'bilinear', \
                                 CamParamRect1, CamParamRect2, \
                                 CamPoseRect1, CamPoseRect2, \
                                 RelPoseRect)
map_image (Image1, Map1, ImageMapped1)
map_image (Image2, Map2, ImageMapped2)
</pre>
</div>
<div data-if="dotnet" style="display:none">
<h2 id="sec_example_dotnet">例程 (HDevelop)</h2>
<pre class="example">
* Open image source.
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, \
                   'default', 'images_l.seq', 'default', 0, -1, AcqHandle1)
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, \
                   'default', 'images_r.seq', 'default', 1, -1, AcqHandle2)

* Initialize the start parameters.
caltab_points ('caltab_30mm.descr', X, Y, Z)
StartCamParam1 := ['area_scan_division', 0.0125, 0, 7.4e-6, 7.4e-6, \
                   Width/2.0, Height/2.0, Width, Height]
StartCamParam2 := StartCamParam1
Rows1 := []
Cols1 := []
StartPoses1 := []
Rows2 := []
Cols2 := []
StartPoses2 := []

* Find calibration marks and startposes.
for i := 0 to 11 by 1
  grab_image_async (Image1, AcqHandle1, -1)
  grab_image_async (Image2, AcqHandle2, -1)
  find_caltab (Image1, CalPlate1, 'caltab_30mm.descr', 3, 120, 5)
  find_caltab (Image2, CalPlate2, 'caltab_30mm.descr', 3, 120, 5)
  find_marks_and_pose (Image1, CalPlate1, 'caltab_30mm.descr', \
                       StartCamParam1, 128, 10, 20, 0.7, 5, 100, \
                       RCoord1, CCoord1, StartPose1)
  Rows1 := [Rows1,RCoord1]
  Cols1 := [Cols1,CCoord1]
  StartPoses1 := [StartPoses1,StartPose1]
  find_marks_and_pose (Image2, CalPlate2, 'caltab_30mm.descr', \
                       StartCamParam2, 128, 10, 20, 0.7, 5, 100, \
                       RCoord2, CCoord2, StartPose2)
  Rows2 := [Rows2,RCoord2]
  Cols2 := [Cols2,CCoord2]
  StartPoses2 := [StartPoses2,StartPose2]
endfor

* Calibrate the stereo rig.
binocular_calibration (X, Y, Z, Rows1, Cols1, Rows2, Cols2, StartCamParam1, \
                       StartCamParam2, StartPoses1, StartPoses2, 'all', \
                       CamParam1, CamParam2, NFinalPose1, NFinalPose2, \
                       RelPose, Errors)
* Archive the results.
write_cam_par (CamParam1, 'cam_left-125.dat')
write_cam_par (CamParam2, 'cam_right-125.dat')
write_pose (RelPose, 'rel_pose.dat')

* Rectify the stereo images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', 'bilinear', \
                                 CamParamRect1, CamParamRect2, \
                                 CamPoseRect1, CamPoseRect2, \
                                 RelPoseRect)
map_image (Image1, Map1, ImageMapped1)
map_image (Image2, Map2, ImageMapped2)
</pre>
</div>
<h2 id="sec_result">结果</h2>
<p><code><span data-if="hdevelop" style="display:inline">binocular_calibration</span><span data-if="c" style="display:none">binocular_calibration</span><span data-if="cpp" style="display:none">BinocularCalibration</span><span data-if="com" style="display:none">BinocularCalibration</span><span data-if="dotnet" style="display:none">BinocularCalibration</span><span data-if="python" style="display:none">binocular_calibration</span></code> returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
     if all parameter values
are correct and the desired parameters have been determined by the
minimization algorithm. 如有必要，将引发异常。</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="find_marks_and_pose.html"><span data-if="hdevelop" style="display:inline">find_marks_and_pose</span><span data-if="c" style="display:none">find_marks_and_pose</span><span data-if="cpp" style="display:none">FindMarksAndPose</span><span data-if="com" style="display:none">FindMarksAndPose</span><span data-if="dotnet" style="display:none">FindMarksAndPose</span><span data-if="python" style="display:none">find_marks_and_pose</span></a></code>, 
<code><a href="caltab_points.html"><span data-if="hdevelop" style="display:inline">caltab_points</span><span data-if="c" style="display:none">caltab_points</span><span data-if="cpp" style="display:none">CaltabPoints</span><span data-if="com" style="display:none">CaltabPoints</span><span data-if="dotnet" style="display:none">CaltabPoints</span><span data-if="python" style="display:none">caltab_points</span></a></code>, 
<code><a href="read_cam_par.html"><span data-if="hdevelop" style="display:inline">read_cam_par</span><span data-if="c" style="display:none">read_cam_par</span><span data-if="cpp" style="display:none">ReadCamPar</span><span data-if="com" style="display:none">ReadCamPar</span><span data-if="dotnet" style="display:none">ReadCamPar</span><span data-if="python" style="display:none">read_cam_par</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="write_pose.html"><span data-if="hdevelop" style="display:inline">write_pose</span><span data-if="c" style="display:none">write_pose</span><span data-if="cpp" style="display:none">WritePose</span><span data-if="com" style="display:none">WritePose</span><span data-if="dotnet" style="display:none">WritePose</span><span data-if="python" style="display:none">write_pose</span></a></code>, 
<code><a href="write_cam_par.html"><span data-if="hdevelop" style="display:inline">write_cam_par</span><span data-if="c" style="display:none">write_cam_par</span><span data-if="cpp" style="display:none">WriteCamPar</span><span data-if="com" style="display:none">WriteCamPar</span><span data-if="dotnet" style="display:none">WriteCamPar</span><span data-if="python" style="display:none">write_cam_par</span></a></code>, 
<code><a href="pose_to_hom_mat3d.html"><span data-if="hdevelop" style="display:inline">pose_to_hom_mat3d</span><span data-if="c" style="display:none">pose_to_hom_mat3d</span><span data-if="cpp" style="display:none">PoseToHomMat3d</span><span data-if="com" style="display:none">PoseToHomMat3d</span><span data-if="dotnet" style="display:none">PoseToHomMat3d</span><span data-if="python" style="display:none">pose_to_hom_mat3d</span></a></code>, 
<code><a href="disp_caltab.html"><span data-if="hdevelop" style="display:inline">disp_caltab</span><span data-if="c" style="display:none">disp_caltab</span><span data-if="cpp" style="display:none">DispCaltab</span><span data-if="com" style="display:none">DispCaltab</span><span data-if="dotnet" style="display:none">DispCaltab</span><span data-if="python" style="display:none">disp_caltab</span></a></code>, 
<code><a href="gen_binocular_rectification_map.html"><span data-if="hdevelop" style="display:inline">gen_binocular_rectification_map</span><span data-if="c" style="display:none">gen_binocular_rectification_map</span><span data-if="cpp" style="display:none">GenBinocularRectificationMap</span><span data-if="com" style="display:none">GenBinocularRectificationMap</span><span data-if="dotnet" style="display:none">GenBinocularRectificationMap</span><span data-if="python" style="display:none">gen_binocular_rectification_map</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="find_caltab.html"><span data-if="hdevelop" style="display:inline">find_caltab</span><span data-if="c" style="display:none">find_caltab</span><span data-if="cpp" style="display:none">FindCaltab</span><span data-if="com" style="display:none">FindCaltab</span><span data-if="dotnet" style="display:none">FindCaltab</span><span data-if="python" style="display:none">find_caltab</span></a></code>, 
<code><a href="sim_caltab.html"><span data-if="hdevelop" style="display:inline">sim_caltab</span><span data-if="c" style="display:none">sim_caltab</span><span data-if="cpp" style="display:none">SimCaltab</span><span data-if="com" style="display:none">SimCaltab</span><span data-if="dotnet" style="display:none">SimCaltab</span><span data-if="python" style="display:none">sim_caltab</span></a></code>, 
<code><a href="read_cam_par.html"><span data-if="hdevelop" style="display:inline">read_cam_par</span><span data-if="c" style="display:none">read_cam_par</span><span data-if="cpp" style="display:none">ReadCamPar</span><span data-if="com" style="display:none">ReadCamPar</span><span data-if="dotnet" style="display:none">ReadCamPar</span><span data-if="python" style="display:none">read_cam_par</span></a></code>, 
<code><a href="create_pose.html"><span data-if="hdevelop" style="display:inline">create_pose</span><span data-if="c" style="display:none">create_pose</span><span data-if="cpp" style="display:none">CreatePose</span><span data-if="com" style="display:none">CreatePose</span><span data-if="dotnet" style="display:none">CreatePose</span><span data-if="python" style="display:none">create_pose</span></a></code>, 
<code><a href="convert_pose_type.html"><span data-if="hdevelop" style="display:inline">convert_pose_type</span><span data-if="c" style="display:none">convert_pose_type</span><span data-if="cpp" style="display:none">ConvertPoseType</span><span data-if="com" style="display:none">ConvertPoseType</span><span data-if="dotnet" style="display:none">ConvertPoseType</span><span data-if="python" style="display:none">convert_pose_type</span></a></code>, 
<code><a href="read_pose.html"><span data-if="hdevelop" style="display:inline">read_pose</span><span data-if="c" style="display:none">read_pose</span><span data-if="cpp" style="display:none">ReadPose</span><span data-if="com" style="display:none">ReadPose</span><span data-if="dotnet" style="display:none">ReadPose</span><span data-if="python" style="display:none">read_pose</span></a></code>, 
<code><a href="hom_mat3d_to_pose.html"><span data-if="hdevelop" style="display:inline">hom_mat3d_to_pose</span><span data-if="c" style="display:none">hom_mat3d_to_pose</span><span data-if="cpp" style="display:none">HomMat3dToPose</span><span data-if="com" style="display:none">HomMat3dToPose</span><span data-if="dotnet" style="display:none">HomMat3dToPose</span><span data-if="python" style="display:none">hom_mat3d_to_pose</span></a></code>, 
<code><a href="create_caltab.html"><span data-if="hdevelop" style="display:inline">create_caltab</span><span data-if="c" style="display:none">create_caltab</span><span data-if="cpp" style="display:none">CreateCaltab</span><span data-if="com" style="display:none">CreateCaltab</span><span data-if="dotnet" style="display:none">CreateCaltab</span><span data-if="python" style="display:none">create_caltab</span></a></code>, 
<code><a href="binocular_disparity.html"><span data-if="hdevelop" style="display:inline">binocular_disparity</span><span data-if="c" style="display:none">binocular_disparity</span><span data-if="cpp" style="display:none">BinocularDisparity</span><span data-if="com" style="display:none">BinocularDisparity</span><span data-if="dotnet" style="display:none">BinocularDisparity</span><span data-if="python" style="display:none">binocular_disparity</span></a></code>, 
<code><a href="binocular_distance.html"><span data-if="hdevelop" style="display:inline">binocular_distance</span><span data-if="c" style="display:none">binocular_distance</span><span data-if="cpp" style="display:none">BinocularDistance</span><span data-if="com" style="display:none">BinocularDistance</span><span data-if="dotnet" style="display:none">BinocularDistance</span><span data-if="python" style="display:none">binocular_distance</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
3D Metrology</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
